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

  • 相关阅读:
    os 模块1
    除法
    python基础四(jsonossys andomstring模块、文件、函数)
    python基础三(集合、文件)
    linux下mysql安装
    linux下tomcat安装
    linux系统jdk安装
    python基础二(list,tuple元祖、dic字典,字符串)
    python基础一(安装、变量、循环、git)
    charles抓包
  • 原文地址:https://www.cnblogs.com/zhaohuaxishi/p/14361882.html
Copyright © 2011-2022 走看看