Ruby, исходный код Splat? - PullRequest
8 голосов
/ 28 мая 2009

Вчера кто-то спросил об операторе splat, и я хотел посмотреть исходный код ... это будет написано на C или Ruby? Где это будет найдено?

Ответы [ 2 ]

7 голосов
/ 28 мая 2009

Был обнаружен быстрый поиск в Google, который реализован в eval.c . Вы можете найти ссылки на "splat" в нескольких местах в файле, но я недостаточно знаком с внутренней работой Ruby, чтобы понять это.

2 голосов
/ 02 августа 2017

Оператор splat плохо документирован в основной документации Ruby начиная с Ruby 2.4. Тем не менее, это ключевая особенность языка, а исходный код оператора splat можно найти в vm_eval.c в rb_yield_splat(VALUE values).

модульный тест для rb_yield_splat проясняет, что происходит:

it "yields with passed array's contents" do
  ret = nil
  @s.rb_yield_splat([1, 2]) { |x, y| ret = x + y }
  ret.should == 3
end
...