Come illustrato nell'esempio rubino di seguito, non è possibile chiamare un lambda
con un numero errato di argomenti come Proc
creato da un Method
perché è rigido sul numero di argomenti:Come convertire il metodo o lambda in non-lambda proc
# method with no args
def a; end
instance_eval(&method(:a))
# ArgumentError: wrong number of arguments (1 for 0)
method(:a).to_proc.call(1, 2, 3)
# ArgumentError: wrong number of arguments (3 for 0)
method(:a).to_proc.lambda?
# => true
Come faccio ad avere un Proc
che non è una lambda sia da un Proc
che è o da un Method
?
Per quanto posso dire, non è possibile convertire un metodo o lambda in un proc non-lambda. Cosa stai cercando di realizzare? –
@WallyAltman La semantica chiamante di un blocco, soprattutto per quanto riguarda il numero di argomenti, ma ci sono molte altre differenze. – michelpm