对于类声明(使用我正在开发的动态类型语言):
class Foo
{
var bar
{
get { return bar; }
set(value) { bar = value; }
}
}
用户可以编写如下内容:
var f = New Foo();
f.bar = 20;
var n = f.bar;
编译器然后将f.bar = 20转换为setter调用,并在getter调用中将n = f.bar转换为。什么可以是Foo类中的setter / getter函数的有效运行时表示?
编译器是否应根据在赋值表达式中使用f.bar的事实决定仅使用setter?