我正在尝试添加一个名为"启用"的属性?到具有吸气剂和二传手的模型.但是,当我执行以下操作时:
def enabled?= value
# .. logic goes here ..
end
Run Code Online (Sandbox Code Playgroud)
我明白了 syntax error, unexpected '?', expecting '\n' or ';'
我应该做什么呢?
sep*_*p2k 10
是的,ruby语法只允许?方法名称,如果它是最后一个字符,所以foo?=无效.有一两件事你可以做,那将是非常地道的,是定义enabled?,enable和disable(或enable!和disable!,如果你想强调的是,他们变异的方法).
如果这不符合您的需求,您可以只为这些方法命名enabled?,enabled=并且只是注意名称之间的轻微不兼容性.
ruby中的方法名称以小写字母或下划线开头,可选地后跟大写和小写字母下划线和digts.方法名称可以选择以问号,感叹号或等号结尾.
所以你不能!
你可以按照通常的ruby惯用法定义启用如下: -
def enabled?
@enabled
end
def enabled=(value)
@enabled = value
end
Run Code Online (Sandbox Code Playgroud)
总结一下.如果要向外界公开属性,请确保您的变量名称允许在方法名称规则的范围内.