Поскольку в Ruby есть несколько различных типов параметров метода (обязательно, по умолчанию, ключевое слово, переменная длина ...), иногда определить, как фактические аргументы будут связаны с формальными параметрами, может быть непросто.
Мне интересно, есть ли способ определить, какой будет эта привязка без фактического вызова метода. Например, для следующего метода A#foo
:
class A
def foo(a, *b, c)
...
end
end
я хотел бы использовать метод, подобный determine_binding
, который мы можем использовать следующим образом:
A.instance_method(:foo).determine_binding(1,2,3,4,5) ## returns { a: 1, b: [2,3,4], c: 5 }
То есть determine_binding
принимает список аргументов и определяет формальную привязку к параметрам foo
, фактически не вызывая foo
. Есть ли что-то подобное (или подобное) в Ruby?