Я играл с MacRuby и замечаю, как он расширяет Ruby, чтобы иметь возможность обрабатывать метод Smalltalk (или message) подписи Objective-C. На первый взгляд, я подумал, что он очень похож на новые аргументы Keyword Ruby 2.0, но дальнейшая проверка показывает, что они работают по-разному.Различия между аргументами ключевого слова в сигнатурах Ruby 2.0 и Interleaved в Objective-C
Моя первая подсказка была при чтении MacRuby method spec on GitHub.
it "can have multiple arguments with the same name" do
def @o.doSomething(x, withObject:y, withObject:z); x + y + z; end
@o.should have_method(:'doSomething:withObject:withObject:')
@o.should_not have_method(:'doSomething')
end
Насколько я знаю, что поведение не допускается в Рубине 2.0, потому что withObject:
часть будет использоваться в качестве единственного идентификатора параметра, и, следовательно, не может быть два с тем же именем.
Является ли это непреодолимой проблемой? Из-за этого MacRuby будет вынужден остаться с Ruby 1.9?