2014-09-26 41 views
1

一直在說有一個意想不到的事情,但我沒有接受任何改變。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 [[email protected]] 
      if anim.time > @animations[index-1].time 
      and anim.time < @animations[index] 
       @animations.splice(index, 0, anim) 
        break 

所有間距儘可能正確。我對所有縮進使用4,並且沒有尾隨空格。我誤解了語法的一些東西嗎?順便說一句,這應該是一個簡單的插入排序。

回答

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 [[email protected]] 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 
+0

工作就像一個魅力。謝謝! – FatalCatharsis 2014-09-26 16:21:47