现在的位置: 首页 > 算法 > 正文

scala学习二 scala中pojo的定义

2019年05月27日 算法 ⁄ 共 1207字 ⁄ 字号 评论关闭

重点:

(1)函数式编程建议的是:对象的状态在发生变化是创建一个新的对象,而不是修改现有对象的内部状态,这样有利于并发安全

(2)在scala中一切都是对象,就我们看到的+,-,×,%都是对象

Java中类的定义:

public class JavaPerson
{
    public JavaPerson(String firstName, String lastName, int age)
    {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }
    
    public String getFirstName()
    {
        return this.firstName;
    }
    public void setFirstName(String value)
    {
        this.firstName = value;
    }
    
    public String getLastName()
    {
        return this.lastName;
    }
    public void setLastName(String value)
    {
        this.lastName = value;
    }
    
    public int getAge()
    {
        return this.age;
    }
    public void setAge(int value)
    {
        this.age = value;
    }
    
    public String toString()
    {
        return "[Person: firstName" + firstName + " lastName:" + lastName +
            " age:" + age + " ]";
    }
    
    private String firstName;
    private String lastName;
    private int age;
}

scala中类的定义:

class Person(var firstName:String, var lastName:String, var age:Int)
{
    def getFirstName = firstName
    def getLastName = lastName
    def getAge = age
    
    def setFirstName(value:String):Unit = firstName = value
    def setLastName(value:String) = lastName = value
    def setAge(value:Int) = age = value

    override def toString =
        "[Person firstName:" + firstName + " lastName:" + lastName +
            " age:" + age + " ]"
}

注意,构造函数参数引入了 var 关键字。简单来说, var 告诉编译器这个值是可变的。因此,Scala
同时生成 accessor( 
String firstName(void))和
mutator(
void firstName_$eq(String))方法。然后,就可以方便地创建 setFoo 属性
mutator 方法,它在幕后使用生成的 mutator 方法。

【上篇】
【下篇】

抱歉!评论已关闭.