visual vectores una qué programacion pasar parametro net matriz matrices generar funcion dimensiones como array ruby rake

ruby - vectores - ¿Cómo puedo pasar una matriz como argumento a una tarea de Rake?



qué es una matriz en programacion (2)

Estoy escribiendo una tarea de Rake y quiero pasar una matriz como uno de los argumentos. Así es como lo tengo actualmente.

task :change_statuses, :ids, :current_status, :new_status do |task, args| puts "args were #{args.inspect}" end

He intentado ejecutar la tarea de estas maneras:

# First argument as array rake "change_statuses[[1,2,3], active, inactive]" # First argument as string rake "utility:change_account_statuses[''1,2,3'', foo, bar]"

Mi salida esperada sería:

args were {:ids=> [1,2,3], :current_status=> 2 , :new_status=> 3}

Sin embargo, mi salida real en cada caso es:

args were {:ids=>"[1", :current_status=>"2", :new_status=>"3]"}

¿Cómo puedo pasar una matriz a una tarea de Rake?


Una de las soluciones es evitar , símbolo en la cadena, por lo que su línea de comando se vería así:

$ rake change_statuses[''1 2 3'', foo, bar]

Entonces simplemente puedes dividir las IDs:

# Rakefile task :change_statuses, :ids, :current_status, :new_status do |task, args| ids = args[:ids].split '' '' puts "args were #{args.inspect}" puts "ids were #{ids.inspect}" end

O puede analizar el valor de los identificadores para obtener el resultado esperado:

args[:ids] = args[:ids].split('' '').map{ |s| s.to_i }

Estoy usando rake 0.8.7


rake "change_statuses[1 2 3, foo, bar]"

esto funciona para mí, no deberías cupo 1 2 3 con ''

task :import_course, [:cids, :title] => :environment do |t, args| puts args[:cids] end

si asigna 1 2 3 como la respuesta correcta, args [: cids] será "''1 2 3''", que '' char incluido, debe recortar '' char, pero si usa mi respuesta, args [: cids] será "1 2 3", que es más fácil de usar, solo necesitas args [: cids] .split ("") para obtener [1, 2, 3]