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

因此无法以这种方式修改参数。