Tôi đã viết một chút nhỏ bé của Scala<stable> và <accessor> khi thực hiện Scalac -Xprint: typer là gì?
object SquareNumbers extends App {
val numbers = List(1,2,3,4,5)
val squares = numbers map (i => i * i)
println (squares)
}
Và chạy nó thông qua scalac
như vậy:
$ scalac -Xprint:typer SquareNumbers.scala
[[syntax trees at end of typer]] // SquareNumbers.scala
package <empty> {
object SquareNumbers extends Object with App {
def <init>(): SquareNumbers.type = {
SquareNumbers.super.<init>();
()
};
private[this] val numbers: List[Int] = immutable.this.List.apply[Int](1, 2, 3, 4, 5);
<stable> <accessor> def numbers: List[Int] = SquareNumbers.this.numbers;
private[this] val squares: List[Int] = SquareNumbers.this.numbers.map[Int, List[Int]](((i: Int) => i.*(i)))(immutable.this.List.canBuildFrom[Int]);
<stable> <accessor> def squares: List[Int] = SquareNumbers.this.squares;
scala.this.Predef.println(SquareNumbers.this.squares)
}
}
Câu hỏi của tôi là, là gì <stable>
và <accessor>
trong đầu ra? Họ được gọi là gì (như trong đó, họ có danh từ tập thể), và họ làm gì?
Tại một đoán, tôi muốn nói rằng có nghĩa là họ đã Vals thay vì vars, và có nghĩa là nó là một callable từ bên ngoài của đối tượng ...