Я cd
редактора в мой Ruby, установить каталог и побежал grep -r ', \*\*' .
и обнаружил, что да, есть методы в STDLIB, которые используют **kwargs
, но только в open3.rb
библиотеки.
./lib/ruby/2.1.0/open3.rb: def popen3(*cmd, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def popen2(*cmd, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def popen2e(*cmd, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def capture3(*cmd, stdin_data: '', binmode: false, **opts)
./lib/ruby/2.1.0/open3.rb: def capture2(*cmd, stdin_data: '', binmode: false, **opts)
./lib/ruby/2.1.0/open3.rb: def capture2e(*cmd, stdin_data: '', binmode: false, **opts)
./lib/ruby/2.1.0/open3.rb: def pipeline_rw(*cmds, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def pipeline_r(*cmds, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def pipeline_w(*cmds, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def pipeline_start(*cmds, **opts, &block)
./lib/ruby/2.1.0/open3.rb: def pipeline(*cmds, **opts)
EDIT:
В @mdesantis предложение, я сделал MRI identifier search для rb_get_kwargs
; оказалось, что в библиотеке ядра C есть, по крайней мере, несколько методов, которые используют ключевые слова args.
Dir.new(string, encoding: enc) -> aDir
Array#sample(n, random: rng) -> new_ary
Array#shuffle!(random: rng) -> ary
GC.start(full_mark: false) -> nil
Почему это имеет значение? – sawa
Я должен написать 'method_missing' в пользовательском классе, и я не уверен, что мне нужно реализовать его как' def method_missing (meth, * args, ** kwargs, & block) 'или просто' def method_missing (meth, * args , & block) '. Я имею в виду, я не знаю, насколько вероятно получить метод с аргументами ключевого слова. –
Поскольку синтаксис позволяет это, вы должны ожидать, что столкнетесь с таким использованием, независимо от фактического использования на данный момент. – sawa