Ruby Rake任务名称中的尾随冒号是什么意思?

Ruby Rake任务名称中的尾随冒号是什么意思?,ruby,rake,symbols,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\u name后面的冒号后缀表示什么?通常,任务名称是一个符号-如

在自定义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\u name
后面的冒号后缀表示什么?通常,任务名称是一个符号-如果您有先决条件,这有什么不同?

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

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

{:task\u 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
  ...
建议使用较新的“JSON风格”符号。

{:task\u 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
  ...

建议使用较新的“JSON风格”表示法。

根据符号是否是哈希键的一部分,您需要使用
task\u name:
:task\u name
,这一事实让我更喜欢旧的hashrocket语法。它看起来可能并不总是那么漂亮,但它更加一致,在更多情况下也能以同样的方式工作。@sockmonk我也是,我提到Ruby风格指南只是为了完整性。Yikes。我的第一个想法是,这样可以更容易地将json哈希定义直接复制到ruby中,但它甚至不能这样做,因为哈希键不能是带有:分隔符的字符串。事实上,您需要使用
task\u name:
:task\u name
,这取决于符号是否是哈希键的一部分,让我更喜欢旧的hashrocket语法。它看起来可能并不总是那么漂亮,但它更加一致,在更多情况下也能以同样的方式工作。@sockmonk我也是,我提到Ruby风格指南只是为了完整性。Yikes。我的第一个想法是,这样可以更容易地将json哈希定义直接复制到ruby中,但它甚至不能做到这一点,因为哈希键不能是带有:分隔符的字符串。