当前位置: 首页 > 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;…...

从芯片到系统:手把手拆解汽车MCU里的安全硬件(SHE/HSE)与独立HSM如何协作

汽车MCU安全架构实战&#xff1a;SHE/HSE与独立HSM的协同设计指南 当一辆现代汽车启动时&#xff0c;从车门解锁到发动机控制&#xff0c;超过1亿行代码在数百个微控制器&#xff08;MCU&#xff09;上同时运行。这些代码中包含着价值连城的数字资产——车主的生物特征数据、自…...

Perplexity图标搜索效率提升300%:从零配置到精准获取的5步实战工作流

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Perplexity图标资源搜索 在构建与 Perplexity AI 集成的前端应用或开发调试工具时&#xff0c;获取其官方图标资源是品牌一致性与用户体验的关键环节。Perplexity 官方未提供公开的图标下载中心&#xff0c;但…...

B-CAST: 瓶颈交叉注意力机制如何重塑视频动作识别的时空建模

1. 视频动作识别的核心挑战 视频动作识别一直是计算机视觉领域的重要研究方向。与静态图像识别不同&#xff0c;视频理解需要模型同时具备空间和时间两个维度的分析能力。想象一下&#xff0c;当我们要判断视频中的人是在"放下奶酪"还是"放下番茄酱"时&…...

面试题目总结

面试心态 越是置自己于低位&#xff0c;就越难获得面试官的青睐。面试官其实更喜欢逻辑清晰&#xff0c;不卑不亢&#xff0c;带点锋芒的应聘者。 不要以通过面试为目的&#xff0c;不然很难摆脱被凝视的状态。要以自我成长与提升为中心。要记住&#xff0c;每一次面试不是成功…...

JetBrains IDE试用期重置终极指南:如何永久免费使用专业开发工具

JetBrains IDE试用期重置终极指南&#xff1a;如何永久免费使用专业开发工具 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 还在为JetBrains IDE试用期到期而烦恼吗&#xff1f;每次30天试用结束后&#xff0c;那…...

别再浪费主板上的PCIE插槽了!手把手教你用VL805芯片打造高速USB3.0扩展坞

释放主板潜能&#xff1a;基于VL805芯片的USB3.0扩展方案实战指南 当你的工作台摆满外设却苦于主板接口不足时&#xff0c;那些闲置的PCIE插槽正等待被唤醒。本文将从芯片选型到性能调优&#xff0c;完整呈现如何将一块VL805-QFN68芯片转化为高性能USB3.0扩展方案。 1. 硬件选型…...

告别SAP GUI!Notepad++配置ABAP语法高亮,离线查看代码更高效

告别SAP GUI&#xff01;Notepad配置ABAP语法高亮&#xff0c;离线查看代码更高效 对于ABAP开发者而言&#xff0c;代码阅读和分析是日常工作中不可或缺的部分。然而&#xff0c;传统的SAP GUI环境并非总是最便捷的选择——无论是通勤途中、客户现场无系统访问权限&#xff0c;…...

如何快速掌握大众点评爬虫:解决动态字体加密的终极实战指南

如何快速掌握大众点评爬虫&#xff1a;解决动态字体加密的终极实战指南 【免费下载链接】dianping_spider 大众点评爬虫&#xff08;全站可爬&#xff0c;解决动态字体加密&#xff0c;非OCR&#xff09;。持续更新 项目地址: https://gitcode.com/gh_mirrors/di/dianping_sp…...

终身机器学习的起源:为什么 LLML 是 AI 领域的下一个游戏改变者(第一部分)

原文&#xff1a;towardsdatascience.com/the-origins-of-lifelong-ml-part-1-of-why-llml-is-the-next-game-changer-of-ai-8dacf9897143?sourcecollection_archive---------12-----------------------#2024-01-17 通过 Q 学习和基于解释的神经网络理解终身机器学习的力量 h…...

NCM解密终极指南:3步解锁网易云音乐加密文件

NCM解密终极指南&#xff1a;3步解锁网易云音乐加密文件 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾经在网易云音乐下载了心爱的歌曲&#xff0c;却发现只能在官方客户端播放&#xff0c;无法在其他设备或播放器上欣赏&…...