【发布时间】:2011-01-23 18:14:27
【问题描述】:
我正在尝试编写一个方法,该方法充当 setter,并在分配的值之外接受一些额外的参数。愚蠢的例子:
class WordGenerator
def []=(letter, position, allowed)
puts "#{letter}#{allowed ? ' now' : ' no longer'} allowed at #{position}"
end
def allow=(letter, position, allowed)
# ...
end
end
把它写成索引器是可行的,我可以这样称呼它:
gen = WordGenerator.new
gen['a', 1] = true
# or explicitly:
gen.[]=('a', 1, true)
但是当我尝试以下任何一种方法时,口译员会抱怨:
gen.allow('a', 1) = false # syntax error
gen.allow=('a', 1, false) # syntax error
为什么这不起作用,我错过了显而易见的事情吗?
【问题讨论】:
标签: ruby methods setter indexer