0

我在 Coffee Script 中有这部分代码,我不知道如何用三元 if 或类似的东西来简化它。

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

对不起愚蠢的问题..

4

2 回答 2

1

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

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

话说回来。我不会那样写,因为 imo 它有很多视觉噪音并且难以阅读。最好做

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})
于 2013-02-21T12:18:05.913 回答
1

使用存在运算符将产生与您编码相同的行为:

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

我个人会摆脱一些括号/大括号,并可能为第一个参数使用单独的变量......但这更多的是关于个人喜好:

tracks = options.tracks ? options
@collection.add tracks, at: length + 1, dest: options.dest
于 2013-02-21T12:19:52.450 回答