Diciamo che ho un/lambda/block/metodo proc/etc in questo modo:Rubino: Come ottenere il valore di default di argomenti proc opzionali
2.1.2 :075 > procedure = Proc.new { |a, b=2, *c, &d| 42 }
=> #<Proc:[email protected](irb):75>
so di poter scoprire i nomi dei parametri con:
2.1.2 :080 > procedure.parameters
=> [[:opt, :a], [:opt, :b], [:rest, :c], [:block, :d]]
Ma come posso fare per ottenere il valore che un determinato parametro opzionale assumerebbe ove è non dato?
PS: Sì. So che questo è stato chiesto/risposto prima dello here, ma la soluzione precedente richiede l'uso della gemma merb
, che in realtà è leggermente fuorviante. merb
stesso dipendeva dalla gemma methopara
(a meno che tu non sia su JRuby o MRI, cosa che non lo sono) che a sua volta ha fornito la funzione al momento della risposta alla domanda.
Purtroppo, al momento, methopara
sembra essere abandonware. Inoltre, ha sempre supportato Ruby 1.9 (e nemmeno l'ultima versione), quindi sto cercando una soluzione che funzioni per le versioni attuali di ruby.
Penso che sia quasi impossibile, devi prendere in considerazione che il cosiddetto valore "default" può essere qualsiasi tipo di codice eseguibile e sarà eseguito ogni volta che lo chiami. – hakcho
@hakcho, cattura molto buona. (Ho completamente perso la cognizione di questo account e ho usato un approccio completamente diverso da quando ho postato questo.) Comunque, sarebbe bello avere accesso programmatico a quel valore (o routine, se è uno). – mikev