Getter的声明就像定义一个没有参数列表的函数一样。然后,getter 主体的行为类似于普通函数,并且必须返回属性的计算值。
variable String local_var = "Hello world!";
// Getter
String name1 {
return local_var;
}
// Also getter, using functional syntax for body
String name2 => local_var;
设置器是使用assign
关键字声明的。然后,setter 主体的行为就像一个 void 函数,执行本地环境的任何适当突变,并且不能返回值。可以通过属性名称在正文中引用正在分配的传入值。
// Setter
assign name1 {
local_var = name1; // name1 here is value being assigned
}
// Also setter, using modified functional syntax
assign name2 => local_var = name2;
与大多数编程语言不同,属性可以是包的顶级成员,而不仅仅是类的成员:
class Circle(shared variable Float radius) {
// Class-level getter
shared Float area {
return pi * radius ^ 2;
}
// Class-level setter
assign area {
radius = sqrt(area / pi);
}
}
Circle window = Circle(1.0);
// Top-level getter
Circle outer_window => Circle(window.radius * 2);
// Top-level setter
assign outer_window => window.radius = outer_window.radius / 2;