Tôi đang cố gắng viết một phương thức hoạt động như một bộ đặt và nhận một số đối số thừa bên cạnh giá trị được gán. Silly dụ:Tạo phương thức setter có thêm đối số trong Ruby
class WordGenerator
def []=(letter, position, allowed)
puts "#{letter}#{allowed ? ' now' : ' no longer'} allowed at #{position}"
end
def allow=(letter, position, allowed)
# ...
end
end
Viết nó như một tác phẩm indexer và tôi có thể gọi nó như thế này:
gen = WordGenerator.new
gen['a', 1] = true
# or explicitly:
gen.[]=('a', 1, true)
Nhưng khi tôi thử bất kỳ những điều sau đây, các thông dịch viên phàn nàn:
gen.allow('a', 1) = false # syntax error
gen.allow=('a', 1, false) # syntax error
Tại sao điều này không hoạt động, tôi có thiếu hiển nhiên không?
liên quan/trùng lặp: http://stackoverflow.com/questions/9280623/setter-method-assignment-with-multiple-arguments – kotique