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

wordpress站内301上海对外经贸大学

wordpress站内301,上海对外经贸大学,长春市网站开发,东道设计公司怎么样文章目录前言1.主构造函数示例2.带辅助构造函数的样例类举例3.带默认参数的主构造函数 vs 辅助构造函数 举例其他举例前言 提示:主要对基础的scala样例类使用做一些说明: 1.主构造函数示例 // 主构造函数样例类 case class Person(name: String, age: …

文章目录

  • 前言
  • 1.主构造函数示例
  • 2.带辅助构造函数的样例类举例
  • 3.带默认参数的主构造函数 vs 辅助构造函数 举例
  • 其他举例


前言

提示:主要对基础的scala样例类使用做一些说明:


1.主构造函数示例

// 主构造函数样例类
case class Person(name: String, age: Int) {println(s"主构造函数创建:$name, $age岁")
}object Main1 {def main(args: Array[String]): Unit = {val p = Person("Alice", 25) // 自动调用主构造函数println(s"输出:${p.name}的年龄是${p.age}")}
}

输出:

主构造函数创建:Alice, 25岁
输出:Alice的年龄是25

2.带辅助构造函数的样例类举例

// 主构造函数+辅助构造函数
case class Book(title: String, author: String, price: Double) {// 辅助构造函数1(通过this定义)def this(title: String) = {this(title, "未知作者", 0.0)println(s"辅助构造函数1创建:仅标题《$title》")}// 辅助构造函数2def this(title: String, author: String) = {this(title, author, 50.0) // 必须优先调用主构造函数println(s"辅助构造函数2创建:《$title》- $author")}
}object Main2 {def main(args: Array[String]): Unit = {val b1 = Book("Scala编程")             // 调用辅助构造函数1val b2 = Book("Java核心", "James")     // 调用辅助构造函数2val b3 = Book("Python入门", "Guido", 39.9) // 调用主构造函数println(s"对比输出:\n" +s"b1: ${b1.title}|${b1.author}|${b1.price}\n" +s"b2: ${b2.title}|${b2.author}|${b2.price}\n" +s"b3: ${b3.title}|${b3.author}|${b3.price}")}
}

​​输出​​:

辅助构造函数1创建:仅标题《Scala编程》
辅助构造函数2创建:《Java核心》- James
对比输出:
b1: Scala编程|未知作者|0.0
b2: Java核心|James|50.0
b3: Python入门|Guido|39.9

3.带默认参数的主构造函数 vs 辅助构造函数 举例

代码如下(示例):

// 默认参数主构造函数
case class Student(name: String, grade: Int = 1, school: String = "第一中学") {println(s"主构造函数:$name 在 $school 读 $grade 年级")
}// 辅助构造函数版本
case class Teacher(name: String, subject: String, years: Int) {def this(name: String) = {this(name, "未分配科目", 0)   //注意这里调用主构造函数  println(s"辅助构造函数:新教师$name")}
}object Main3 {def main(args: Array[String]): Unit = {val s1 = Student("小明")                   // 使用默认参数val s2 = Student("小红", 3, "实验中学")     // 覆盖所有参数val t1 = new Teacher("张老师")             // 调用辅助构造函数val t2 = Teacher("李老师", "数学", 10)      // 调用主构造函数println(s"学生对比:${s1.grade} vs ${s2.grade}")println(s"教师对比:${t1.subject} vs ${t2.subject}")}
}

输出:

主构造函数:小明 在第一中学读1年级
主构造函数:小红 在实验中学读3年级
辅助构造函数:新教师张老师
学生对比:1 vs 3
教师对比:未分配科目 vs 数学

*​​辅助构造函数必须首行调用主构造函数或其他辅助构造函数​​(如 this(…)),这是 Scala 的强制语法规则.
强制调用顺序​​:
辅助构造函数的​​第一行代码​​必须调用主构造函数或其他已定义的辅助构造函数。若违反此规则,编译器会直接报错。
​​原因​​:Scala通过这种方式确保所有构造路径最终都会调用主构造函数,从而统一对象的初始化逻辑。
​​间接调用主构造函数​​:
即使辅助构造函数首次调用的是其他辅助构造函数,最终也必须通过链式调用传递到主构造函数。例如:

class Person(name: String) { // 主构造函数def this() = this("Anonymous")      // 辅助构造函数1 → 调用主构造函数def this(name: String, age: Int) = { // 辅助构造函数2 → 调用辅助构造函数1this() // 间接调用主构造函数println(s"Name: $name, Age: $age")}
}

其他举例

代码示例:    
case class Person(name: String, age: Int) {// 辅助构造函数1:仅接受name参数,age默认为0def this(name: String) = this(name, 0)// 辅助构造函数2:接受出生年份,动态计算年龄def this(birthYear: Int) = this("Unknown", 2025 - birthYear)
}
// 使用示例
val person1 = Person("Alice", 25)      // 主构造器               -重点
val person2 = new Person("Bob")        // 辅助构造器1(需用new)  -重点
val person3 = new Person(1990)         // 辅助构造器2(需用new)  -重点

举例另一种例子

case class Person(name: String, age: Int) {// 辅助构造函数:通过另一个Person对象初始化def this(other: Person) = this(other.name, other.age + 1)  // 年龄+1作为差异
}// 使用示例
val person1 = Person("Alice", 25)       // 主构造器
val person2 = new Person(person1)      // 辅助构造器(需用new)  -重点
println(person2)                       // 输出: Person(Alice,26)    
http://www.dtcms.com/a/423854.html

相关文章:

  • 当AI助手“记忆混乱”:理解与应对Roo Code的上下文污染问题
  • Docker 网络详解:(二)虚拟网络环境搭建与测试
  • 【Docker】在项目中如何实现Dockerfile 文件编写
  • 专门做任务的网站吗wordpress数据库文件
  • AMD KFD的BO设计分析系列5-3:VM-amdgpu_bo_va_mapping
  • FilterSolutions2019使用指南
  • 方寸控股解读:《工业园区高质量发展指引》下的园区升级路径
  • 学习总结——接口测试基础
  • 好的案例展示网站在线设计平台招募设计师
  • 阳泉网站建设哪家便宜上海哪家公司提供专业的网站建设
  • TCP的理解
  • 鸿蒙应用主题模式切换实现详解
  • Matplotlib `imsave()` 函数详解
  • NFC技术如何破解电子制造领域的效率瓶颈与追溯难题
  • sk06.【scikit-learn基础】--『监督学习』之决策树
  • 银川怎么做网站wordpress炫酷站
  • 网站说明页命名大连响应式网站建设
  • 程序综合实践第二次递归与dfs
  • 半双工 vs 全双工:对讲机与电话的根本区别
  • 华茂达建设集团网站公司注册网上核名业务如何终止
  • 从虚拟背景到绿幕替换:人像分割功能在直播美颜sdk中的落地应用
  • 建设电影网站论文微信营销模式有哪些
  • Spring的配置(使用注解)
  • Codex CLI 配置 Azure OpenAI GPT-5-codex 指南
  • SAP与阿里巴巴战略合作升级:四大核心云解决方案落地阿里云
  • 用网站模板做新网站网络营销实训报告
  • Spring Ai Alibaba开发指南
  • 建立什么网站赚钱淘宝交易指数换算工具
  • Sirius 开源免费的漏扫工具
  • 网站可以做被告嘛wordpress 设置404