在这种情况下,“:”在咖啡脚本中意味着什么?

时间:2015-05-11 05:11:39

标签: coffeescript

我是咖啡脚本的新手。当我查看此文档时https://atom.io/docs/api/v0.198.0/CommandRegistry#instance-add 我看到了像

这样的代码段
::add(target, commandName, callback)

虽然函数签名看起来,

:

所以在代码段中,第二行的:是什么意思?我的理解是签名中commandName:之前的'user:insert-date'。 :之后的事情是“回调”。那么,是一个像{{1}}这样的参数分隔符?我没有在咖啡脚本文档http://coffeescript.org

中找到这个

2 个答案:

答案 0 :(得分:3)

冒号只是对象文字的一部分。当没有歧义时,CoffeeScript中的对象文字大括号是可选的。如果我们添加可选的大括号,我们会得到更像JavaScript的东西:

atom.commands.add 'atom-text-editor', {
  'user:insert-date': (event) ->
    #...
}

因此使用两个参数调用atom.commands.add。第一个是字符串'atom-text-editor',第二个是一个带有一个键('user:insert-date')的对象,其值是一个带有单个参数的匿名函数。

答案 1 :(得分:0)

附加mu太短了答案(用户绝对正确,第二个参数commandName可以是没有显式括号{}的对象

Atom的源代码: https://github.com/atom/atom/blob/v0.198.0/src/command-registry.coffee#L81

add: (target, commandName, callback) ->
if typeof commandName is 'object'
  commands = commandName
  disposable = new CompositeDisposable
  for commandName, callback of commands
    disposable.add @add(target, commandName, callback)
  return disposable