rake 任务参数是不可变的吗?
Are rake task arguments immutable?
我想修改任务参数的值(例如,我希望参数成为一个符号)。但似乎 rake 任务参数是不可变的,这是正确的吗?
task :my_task,[:some_arg,:another_arg] do |cmd,args|
puts args[:some_arg].class
args[:some_arg]=args[:some_arg].to_sym
puts args[:some_arg].class
end
在这里查看 rake 源 https://github.com/ruby/rake/blob/master/lib/rake/task_arguments.rb 我们可以检查,该方法 []
被覆盖了:
# Find an argument value by name or index.
def [](index)
lookup(index.to_sym)
end
因此无法以这种方式修改参数。
我想修改任务参数的值(例如,我希望参数成为一个符号)。但似乎 rake 任务参数是不可变的,这是正确的吗?
task :my_task,[:some_arg,:another_arg] do |cmd,args|
puts args[:some_arg].class
args[:some_arg]=args[:some_arg].to_sym
puts args[:some_arg].class
end
在这里查看 rake 源 https://github.com/ruby/rake/blob/master/lib/rake/task_arguments.rb 我们可以检查,该方法 []
被覆盖了:
# Find an argument value by name or index.
def [](index)
lookup(index.to_sym)
end
因此无法以这种方式修改参数。