Где вы просите a := b := c := AutoHash.new.few 3
Я думаю (не уверен, что понимаю ваше желание), что вы действительно хотите a,b,c=Autohash.new.few 3
Почему немногие принимают переменные аргументы, когда вы используете только первое?
Я также считаю, что ваше создание возвращаемого значения сбивает с толку, может быть, попробуйте
def few(n=0)
Array.new(n) { AutoHash.new }
end
Кроме того, похоже, что few
должен быть методом класса. a,b,c=AutoHash.few 3
, который будет работать, если вы определили несколько в классе:
def AutoHash.few(n=0)
Array.new(n) { AutoHash.new }
end
Если a,b,c=AutoHash.few 3
не то, что вы ищете, и вы действительно хотите реализовать свой собственный оператор, тогда посмотрите Взлом parse.y , который выступление на RubyConf 2009. Вы можете посмотреть презентацию на http://rubyconf2009.confreaks.com/19-nov-2009-17-15-hacking-parsey-tatsuhiro-ujihisa.html и слайды на http://www.slideshare.net/ujihisa/hacking-parsey-rubyconf-2009