with tutorial framework español djangoproject desde con cero applications ruby-on-rails ruby arrays methods arguments

ruby on rails - tutorial - ¿Cómo paso múltiples argumentos a un método Ruby como una matriz?



tutorial django (3)

Solo llámalo de esta manera:

table_for(@things, *args)

El operador splat ( * ) hará el trabajo, sin tener que modificar el método.

Tengo un método en un archivo de rails helper como este

def table_for(collection, *args) options = args.extract_options! ... end

y quiero poder llamar a este método así

args = [:name, :description, :start_date, :end_date] table_for(@things, args)

para poder pasar dinámicamente los argumentos basados ​​en un commit de formulario. No puedo reescribir el método, porque lo uso en demasiados lugares, ¿de qué otra manera puedo hacer esto?


Ruby maneja bien varios argumentos.

Este es un buen ejemplo.

def table_for(collection, *args) p collection: collection, args: args end table_for("one") #=> {:collection=>"one", :args=>[]} table_for("one", "two") #=> {:collection=>"one", :args=>["two"]} table_for "one", "two", "three" #=> {:collection=>"one", :args=>["two", "three"]} table_for("one", "two", "three") #=> {:collection=>"one", :args=>["two", "three"]} table_for("one", ["two", "three"]) #=> {:collection=>"one", :args=>[["two", "three"]]}

(Salida cortada y pegada de irb)


class Hello $i=0 def read(*test) $tmp=test.length $tmp=$tmp-1 while($i<=$tmp) puts "welcome #{test[$i]}" $i=$i+1 end end end p Hello.new.read(''johny'',''vasu'',''shukkoor'') # => welcome johny # => welcome vasu # => welcome shukkoor