zoukankan      html  css  js  c++  java
  • 【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 }

    运行结果:

    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才能运行。

  • 相关阅读:
    实验一
    BZOJ 2564
    P4557 [JSOI2018]战争
    移动自动化-Mac-IOS-appium环境搭建
    Node安装mac版本
    删除N天前文件和空文件
    Python之jsonpath模块
    性能学习
    参数化
    查找测试用例
  • 原文地址:https://www.cnblogs.com/zhaohuaxishi/p/14361882.html
Copyright © 2011-2022 走看看