当前位置: 首页 > news >正文

7 scala的类构造器

在创建对象的时候,需要调用类的构造器。Scala 提供了主构造器和辅助构造器。

1 主构造器

与 Java 一样,如果我们没有特别定义,那么 Scala 提供的默认构造器是没有参数的。

我们可以在类名后,指定构造器的参数列表,列表里的参数将成为类的成员属性,这样的构造器叫做主构造器。定义的语法如下:

class 类名(var/val 参数名: 参数类型 = 默认值, var/val 参数名: 参数类型 = 默认值 ...) {// 构造器代码
}

下面的例子中,我们在主构造器中定义了 name, age, club 三个参数:

class FootballPlayer(name: String, age: Int = 20, club: String = "FIFA") {var price: Double = 100_0000def hello(): String = {s"${this.name} is in ${this.club}, ${this.age} years old. Pay ${this.price} dollar to purchase him."}
}object App {def main(args: Array[String]): Unit = {val footBallPlayer = new FootballPlayer("Cristiano Ronaldo", 39, "Al-Nassr FC")println(footBallPlayer.hello())}
}

运行后,控制台输出:

Cristiano Ronaldo is in Al-Nassr FC, 39 years old. Pay 1000000.0 dollar if you want to purchase him.

2 辅助构造器

如果需要使用多种方式创建对象,可以使用辅助构造器。定义辅助构造器和定义方法类似,通过关键字 def 定义,不同的是,这个方法的名称固定为 this,语法如下:

def this(参数名: 参数类型, 参数名: 参数类型, ...) {// 构造器代码
}

例如:

/*** 球员信息类** @param name 球员姓名* @param age  年龄* @param club 所在俱乐部*/
class FootballPlayer(name: String, age: Int = 20, club: String = "FIFA") {/*** 身价*/var price: Double = 100_0000/*** 辅助构造器** @param name  球员姓名* @param age   年龄* @param club  所在俱乐部* @param price 身价*/def this(name: String, age: Int, club: String, price: Double) = {// 调用主构造器this(name, age, club)this.price = price}def hello(): String = {s"${this.name} is in ${this.club}, ${this.age} years old. Pay ${this.price} dollar to purchase him."}
}object App {def main(args: Array[String]): Unit = {val footBallPlayer = new FootballPlayer("Cristiano Ronaldo", 39, "Al-Nassr FC", 1200_0000)println(footBallPlayer.hello())}
}

相关文章:

7 scala的类构造器

在创建对象的时候,需要调用类的构造器。Scala 提供了主构造器和辅助构造器。 1 主构造器 与 Java 一样,如果我们没有特别定义,那么 Scala 提供的默认构造器是没有参数的。 我们可以在类名后,指定构造器的参数列表,列…...

如何在 Mac 上恢复永久删除的文件:有效方法

您是否错误地从 Mac 中删除了某个文件,并且确信它已经永远消失了?好吧,你可能错了。即使您认为已永久删除计算机上的数据,仍有可能将其恢复。 在本文中,您将了解如何在 Mac 上恢复永久删除的文件,并了解增…...

Web后端开发:事务与AOP

事务管理 在学习数据库时,讲到:事务是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求,要么同时成功,要么同时失败。 事务的操作主要有三…...

[word] word如何打印背景和图片? #微信#其他#经验分享

word如何打印背景和图片? 日常办公中会经常要打印文件的,其实在文档的打印中也是有很多技巧的,可以按照自己的需求设定,下面给大家分享word如何打印背景和图片,一起来看看吧! 1、打印背景和图片 在默认的…...

Maven - 编译报错:程序包 XXX 不存在(多模块项目)

问题描述 编译报错&#xff1a;程序包 XXX 不存在&#xff08;多模块项目&#xff09; 原因分析 检查依赖模块 pom 文件&#xff0c;看是不是引入了如下插件 <plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-pl…...

Vue事件中如何使用 event 对象

在Vue中&#xff0c;事件处理函数常常需要获取事件触发时的相关信息&#xff0c;比如鼠标位置、按键信息等。而要获取这些信息&#xff0c;就需要使用event对象。那么在Vue的事件中如何正确使用event对象呢&#xff1f;接下来就来详细介绍一下。 首先&#xff0c;在Vue的事件中…...

Golang GC 介绍

文章目录 0.前言1.发展史2.并发三色标记清除和混合写屏障2.1 三色标记2.2 并发标记问题2.3 屏障机制Dijkstra 插入写屏障Yuasa 删除写屏障混合写屏障 3.GC 过程4.GC 触发时机5.哪里记录了对象的三色状态&#xff1f;6.如何观察 GC&#xff1f;方式1&#xff1a;GODEBUGgctrace1…...

决策树之scikit-learn

实例 from sklearn.datasets import load_iris from sklearn import tree import matplotlib.pyplot as plt# Load iris dataset iris load_iris() X, y iris.data, iris.target# Fit the classifier clf tree.DecisionTreeClassifier() clf clf.fit(X, y)# Plot the deci…...

Python爬虫之关系型数据库存储#5

关系型数据库是基于关系模型的数据库&#xff0c;而关系模型是通过二维表来保存的&#xff0c;所以它的存储方式就是行列组成的表&#xff0c;每一列是一个字段&#xff0c;每一行是一条记录。表可以看作某个实体的集合&#xff0c;而实体之间存在联系&#xff0c;这就需要表与…...

ANSI Escape Sequence 下落的方块

ANSI Escape Sequence 下落的方块 1. ANSI Escape 的用途 无意中发现 B站有人讲解&#xff0c; 完全基于终端实现俄罗斯方块。 基本想法是借助于 ANSI Escape Sequence 实现方方块的绘制、 下落动态效果等。对于只了解 ansi escape sequence 用于 log 的颜色打印的人来说&…...

Vagrant 虚拟机工具基本操作指南

Vagrant 虚拟机工具基本操作指南 ​#虚拟机 #​ ​#vargant#​ ​#ubuntu#​ ‍ 虚拟机virtualbox ,VMWare及WSL等大家都很了解了&#xff0c;那Vagrant是什么东西&#xff1f; 它是一组命令行工具&#xff0c;可以象Docker管理容器一样管理虚拟机&#xff0c;这样快速创…...

中年低端中产程序员从西安出发到海南三亚低成本吃喝万里行:西安-南宁-湛江-雷州-徐闻-博鳌-陵水-三亚-重庆-西安

文章大纲 旅途规划来回行程的确定南宁 - 北海 - 湛江轮渡成为了最终最大的不确定性&#xff01;感谢神州租车气温与游玩地点总体花费 游玩过程出发时间&#xff1a;Day1-1月25日星期四&#xff0c;西安飞南宁路途中&#xff1a;Day2-1月26日星期五&#xff0c;南宁-湛江-住雷州…...

企业级Spring boot项目 配置清单

目录 一、服务基础配置 二、配置数据库数据源 三、配置缓存 四、配置日志 五、配置统一异常处理 六、配置swagger文档 七、配置用户登录模块 八、配置websocket 九、配置定时任务 十、配置文件服务器 十一、配置Nacos 十二、配置项目启动数据库默认初始化(liquibas…...

WordPress函数wptexturize的介绍及用法示例,字符串替换为HTML实体

在查看WordPress你好多莉插件时发现代码中使用了wptexturize()函数用来随机输出一句歌词&#xff0c;下面boke112百科就跟大家一起来学习一下WordPress函数wptexturize的介绍及用法示例。 WordPress函数wptexturize介绍 wptexturize( string $text, bool $reset false ): st…...

【Iceberg学习三】Reporting和Partitioning原理

Metrics Reporting Type of Reports 从 1.1.0 版本开始&#xff0c;Iceberg 支持 MetricsReporter 和 MetricsReport API。这两个 API 允许表达不同的度量报告&#xff0c;并支持一种可插拔的方式来报告这些报告。 ScanReport&#xff08;扫描报告&#xff09; 扫描报告&am…...

肯尼斯·里科《C和指针》第12章 使用结构和指针(1)链表

只恨当时学的时候没有读到这本书&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c;&#xff0c; 12.1 链表 有些读者可能还不熟悉链表&#xff0c;这里对它作一简单介绍。链表(linked list)就一些包含数据的独立数据结构&#xff08;通常称为节点&#xff09;的集…...

Xray 工具笔记

Xray 官方文档 扫描单个url&#xff08;非爬虫&#xff09; 并输出文件&#xff08;不同文件类型&#xff09; .\xray.exe webscan --url 10.0.0.6:8080 --text-output result.txt --json-output result.json --html-output report.html默认启动所以内置插件 &#xff0c;指定…...

Linux环境下配置HTTP代理服务器教程

大家好&#xff0c;我是你们可爱的Linux小助手&#xff01;今天&#xff0c;我将带你们一起探索如何在Linux环境下配置一个HTTP代理服务器。请注意&#xff0c;这不是一次火箭科学的实验&#xff0c;而是一次简单而有趣的冒险。 首先&#xff0c;我们需要明确什么是HTTP代理服…...

JavaEE作业-实验三

目录 1 实验内容 2 实验要求 3 思路 4 核心代码 5 实验结果 1 实验内容 简单的线上图书交易系统的web层 2 实验要求 ①采用SpringMVC框架&#xff0c;采用REST风格 ②要求具有如下功能&#xff1a;商品分类、订单、购物车、库存 ③独立完成&#xff0c;编写实验报告 …...

K8S容器挂了后重启状态正常,但应用无法访问排查处理

K8S容器挂了后重启状态正常&#xff0c;但应用无法访问排查处理 背景&#xff1a; 应用迁移K8S后因POD OOM挂了后重启&#xff0c;集群上POD状态正常&#xff0c;但应用无法访问。 排查&#xff1a; 查看应用日志&#xff0c;是启动时调用特权账号管理系统超时&#xff0c;…...

CayenneMQTT库详解:嵌入式设备快速接入MQTT平台

1. CayenneMQTT 库概述 CayenneMQTT 是一个专为物联网设备设计的轻量级 MQTT 客户端库&#xff0c;核心目标是将嵌入式终端&#xff08;如 Arduino、ESP8266、ESP32&#xff09;快速、可靠地接入 Cayenne IoT 平台 的可视化仪表盘。该库并非从零实现 MQTT 协议栈&#xff0c…...

如何利用系统提示词革新开源项目的AI功能实现

如何利用系统提示词革新开源项目的AI功能实现 【免费下载链接】system_prompts_leaks 项目地址: https://gitcode.com/GitHub_Trending/sy/system_prompts_leaks 在人工智能技术快速发展的今天&#xff0c;系统提示词已成为解锁AI潜能的关键钥匙。对于开源项目而言&…...

SVN检出报错大全:从E170011到E120106的实战解决手册(附cleanup的正确用法)

SVN检出报错实战指南&#xff1a;从E170011到E120106的深度解析与解决方案 引言&#xff1a;SVN检出报错的常见场景与应对思路 在团队协作开发中&#xff0c;版本控制系统扮演着至关重要的角色。作为集中式版本控制的代表&#xff0c;SVN&#xff08;Subversion&#xff09;至今…...

终极ESLyric歌词源配置指南:三步解锁酷狗QQ网易云逐字歌词

终极ESLyric歌词源配置指南&#xff1a;三步解锁酷狗QQ网易云逐字歌词 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 想在Foobar2000中享受酷狗音乐、QQ…...

手把手教你用Python搭建IPTV直播源管理系统(DIYP影音定制版)

Python实战&#xff1a;构建高可用IPTV直播源管理系统&#xff08;DIYP影音深度集成版&#xff09; 在流媒体技术蓬勃发展的今天&#xff0c;个性化直播解决方案正成为技术爱好者的新宠。本文将带你从零开始&#xff0c;用Python打造一个功能完备的IPTV直播源管理系统&#xf…...

基于OpenCV的多条形码高效定位与识别实战

1. 为什么需要多条形码识别技术 在零售仓储和物流分拣场景中&#xff0c;我们经常需要同时处理多个条形码。比如快递站点的包裹分拣机&#xff0c;每秒钟要处理数十个包裹的条形码&#xff1b;超市收银台的商品堆里&#xff0c;经常叠放着五六件带条形码的商品。传统扫码枪需要…...

深度学习项目训练环境多场景落地:自动驾驶小车图像识别项目快速启动

深度学习项目训练环境多场景落地&#xff1a;自动驾驶小车图像识别项目快速启动 你是不是也遇到过这样的问题&#xff1f;想跑一个深度学习项目&#xff0c;光是配环境就花了大半天&#xff0c;各种版本冲突、依赖报错&#xff0c;好不容易装好了&#xff0c;一运行又提示缺这…...

Wan2.2-I2V-A14B生产环境部署:Nginx反向代理与Docker Compose编排

Wan2.2-I2V-A14B生产环境部署&#xff1a;Nginx反向代理与Docker Compose编排 1. 部署目标与前置准备 在开始之前&#xff0c;我们先明确这次部署要实现的目标&#xff1a;通过Docker Compose编排Wan2.2-I2V-A14B模型服务及其依赖组件&#xff0c;使用Nginx作为反向代理&…...

Mac Mouse Fix解决方案:让第三方鼠标在macOS上重获新生的完全指南

Mac Mouse Fix解决方案&#xff1a;让第三方鼠标在macOS上重获新生的完全指南 【免费下载链接】mac-mouse-fix Mac Mouse Fix - A simple way to make your mouse better. 项目地址: https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix macOS系统对第三方鼠标的支持…...

结合卷积神经网络思想优化BERT文本分割边界判定

结合卷积神经网络思想优化BERT文本分割边界判定 文本分割&#xff0c;简单来说&#xff0c;就是把一大段连续的文字&#xff0c;按照意思或者结构&#xff0c;切成一个个有意义的片段。这听起来简单&#xff0c;但在实际应用中&#xff0c;比如处理会议记录、客服对话或者网络…...