Большинство из них знают о специальном значении _ в IRB как держателе для последнего значения возврата, но это не то, о чем я прошу здесь.
Вместо этого я спрашиваю о _ при использовании в качестве имени переменной в обычном-Ruby-коде. Здесь он, похоже, имеет особое поведение, сродни переменной "не волнует меня" (à la Prolog). Вот несколько полезных примеров, иллюстрирующих его уникальное поведение:
lambda { |x, x| 42 }            # SyntaxError: duplicated argument name
lambda { |_, _| 42 }.call(4, 2) # => 42
lambda { |_, _| 42 }.call(_, _) # NameError: undefined local variable or method `_'
lambda { |_| _ + 1 }.call(42)   # => 43
lambda { |_, _| _ }.call(4, 2)  # 1.8.7: => 2
                                # 1.9.3: => 4
_ = 42
_ * 100         # => 4200
_, _ = 4, 2; _  # => 2
Все они были запущены в Ruby напрямую (с добавлением puts) - не IRB - чтобы не противоречить его дополнительным функциям.
Все это результат моего собственного эксперимента, хотя я не могу найти никакой документации по этому поведению в любом месте (по общему признанию, это не самая простая вещь для поиска). В конечном счете, мне любопытно, как все это работает внутри, поэтому я могу лучше понять, что особенного в _. Поэтому я запрашиваю ссылки на документацию и, желательно, исходный код Ruby (и, возможно, RubySpec), которые показывают, как ведет себя _ в Ruby.
Примечание: большая часть этого возникла из этой дискуссии с @Niklas B.суб >
