Coffeescript有助于简化if子句

时间:2013-02-21 11:55:03

标签: coffeescript

我在Coffee Script中有这部分代码,我无法弄清楚如何用这样的三元数来简化它...

if options.tracks?
  @collection.add(options.tracks, {at: length+1, dest:options.dest})
else
  @collection.add(options, {at: length+1, dest:options.dest})

抱歉愚蠢的问题..

2 个答案:

答案 0 :(得分:1)

CoffeeScript没有简单的tenary运算符,但你可以使用if将产生任一分支的最后一个表达式

@collection.add((if options.tracks then options.tracks else options), 
  {at: length+1, dest:options.dest})

说完了。我不会这样写,因为它有很多视觉噪音,很难阅读。做得更好

tracks = if options.tracks then options.tracks else options
@collection.add(tracks, {at: length+1, dest:options.dest})

甚至更好

tracks = options.tracks || options
@collection.add(tracks, {at: length+1, dest:options.dest})

答案 1 :(得分:1)

使用existential operator将产生与您编码相同的行为:

@collection.add(options.tracks ? options, {at: length + 1, dest: options.dest})

我个人会摆脱一些parens / braces,也许会为第一个参数使用一个单独的变量......但这更多是关于个人偏好:

tracks = options.tracks ? options
@collection.add tracks, at: length + 1, dest: options.dest