【scala语言入门】 一、apply与unapply
1 class Person (val name:String, val age:Int){ 2 var myName = name; 3 var myAge = age; 4 5 def say():Unit={ 6 println("i am "+myName+" and my age is "+myAge); 7 } 8 } 9 10 11 object Person{ 12 def apply(name :String , age :Int) : Person = new Person(name,age); 13 14 def unapply(p:Person): Option[(String,Int)] = Some(p.myName,p.myAge) 15 } 16 17 // 测试new出来的 对象是 var还是val ,如果是val,能否修改val指向的对象,或者修改val指向的对象的值 18 object test{ 19 20 def main(args:Array[String]){ 21 // 1. new 的 对象能否是 var . 結果, 可以用var來修饰 创建的对象 22 var people= new Person("good",20); 23 people.say(); 24 // 如果属性字段用private修饰了,则不能进行改变,否则可以进行操作 25 // people.myName="hello"; 26 27 // 2. 用val来表示new的对象 28 val p2 = new Person("thank",20); 29 p2.myAge=40; 30 31 // 不能对val修饰的常量重新赋值 32 // p2=people; 33 p2.say(); 34 35 // 用伴生对象的apply来创建实例 36 val p3=Person("big",30); 37 p3.say(); 38 39 // 3.模式匹配配合unapply获取对象的参数 40 p3 match { 41 // s是模板字符串的,字符串前面加上s,才能在字符串里使用$ 去引用变量; 42 case Person(name,age) => println(s"name:$name , age:$age "); 43 case _ => println("无法解析"); 44 } 45 46 } 47 }
运行结果:
1 2 3 4 5 6 | warning: 1 deprecation (since 2.13.0); re-run with -deprecation for details i am good and my age is 20 i am thank and my age is 40 i am big and my age is 30 name:big , age:30 [Finished in 2.7s] |
注意: scala是运行在JVM上的语言,所以需要本地先安装java,再安装scala才能运行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!