2016-10-15 5 views
4

Я изучаю Scala, но мне трудно понять это. Я получил код Scala в одном из уроков, но я не могу понять несколько вещей.Что такое '_ =' в scala?

Это код:

class Person(val id:Int, 
      var firstName:String, 
      var lastName:String, 
      private var _age:Int) { 
    // these methods are identical to what would be created by var in the constructor 
    def age = _age 
    def age_=(newAge:Int) = _age = newAage 
} 

val me = new Person(45,"Dave","Copeland",35) 
me.firstName = "David" 
me.age = 36 

я не понял:

  1. почему _age, почему не age, есть какие-либо специальные benifit или просто условность, чтобы понять, как частный.

  2. Что такое _= в def age_=(newAge:Int) = _age = newAage что это заявление делает.

+3

http://dustinmartin.net/getters-and-setters-in-scala/ –

ответ

9

Это способ объявить getters and setters в Скале.

Почему _age, почему бы и нет, есть ли какое-либо особое преимущество или просто соглашение, которое можно понять как личное.

Потому что age уже принят декларацией-получателем, поэтому вам нужно альтернативное имя переменной.

Что такое _= в def age_=(newAge: Int) = _age = newAge что это заявление делает.

Это подсказка для компилятора, что это метод сеттера. Внешне, возраст будет как свойство, которое можно назвать так:

val p = new Person(1, "a", "b", 10) 
p.age = 42 
println(p.age) 

Вы явно не ссылаться age_=, но метод установки будет еще дозвонились. То же самое касается геттера.

Смежные вопросы