coffeescript中的语法错误

时间:2014-09-26 15:58:25

标签: coffeescript

继续说有一个意想不到的,但我没有接受任何改变。

addAnimation : (anim) ->
    if anim.time > @animations[@animations.length - 1]
        @animations.push(anim)
    else if anim.time < @animations[0]
        @animations.unshift(anim)
    else
        for index in [1..@animations.length]
            if anim.time > @animations[index-1].time
            and anim.time < @animations[index]
                @animations.splice(index, 0, anim)
                    break

所有间距尽可能正确。我使用4进行所有缩进,并且没有尾随空格。我是否误解了语法问题。顺便说一句,这应该是一个简单的插入排序。

1 个答案:

答案 0 :(得分:2)

如果您将and内联并删除break语句中的额外缩进,那么它可以正常工作。

addAnimation : (anim) ->
    if anim.time > @animations[@animations.length - 1]
        @animations.push(anim)
    else if anim.time < @animations[0]
        @animations.unshift(anim)
    else
        for index in [1...@animations.length] by 1
            if anim.time > @animations[index-1].time and 
            anim.time < @animations[index]
                @animations.splice(index, 0, anim)
                break

关键是如果行以操作符结束,CoffeeScript将不会将下一行解释为语句的主体,因此如果您希望if语句跨越多行,则必须以每行结束运营商:

if a and 
b and
not c
  do something

虽然这不会编译:

if a
and b 
not c
  do nothing