尾随冒号在Rake任务名称中的含义是什么?

时间:2014-01-17 16:46:32

标签: ruby rake symbols

在自定义Rake任务示例中:

desc "I am short, but comprehensive description for my cool task"
task task_name: [:prerequisite_task, :another_task_we_depend_on] do
  # All your magic here
  # Any valid Ruby code is allowed
end

task_name后的冒号后缀是什么意思?通常,任务名称是一个符号 - 如果您有先决条件,这与此有何不同?

2 个答案:

答案 0 :(得分:3)

literal {task_name: [:symbol]}{:task_name => [:symbol]}的简写符号,这个符号是在Ruby 1.9中引入的:

{task_name: [:symbol]}
# => {:task_name=>[:symbol]}

您的示例实际上相当于:

task :task_name => [:prerequisite_task, :another_task_we_depend_on] do
  ...

如果您没有先决条件,则必须使用通常的符号:

task :task_name do
  ...

Ruby Style Guide建议更喜欢较新的" JSON样式",表示法。

答案 1 :(得分:0)

语法something: value表示与:something => value完全相同。它只是更具可读性。