Coffeescript:不匹配的outdent错误

Coffeescript:不匹配的outdent错误,coffeescript,Coffeescript,以下代码: binary_search = (arr, val)-> arr = arr.concat(arr) lower = 0 ; upper = arr.length-1 while upper-lower > 1 mid = Math.floor((lower+upper)/2) if arr[mid] is val return mid if arr[mid] < val

以下代码:

binary_search = (arr, val)->
    arr = arr.concat(arr)
    lower = 0 ; upper = arr.length-1
    while upper-lower > 1
        mid = Math.floor((lower+upper)/2)
        if arr[mid] is val
            return mid
        if arr[mid] < val
            if arr[mid-1] < arr[mid+1]
                low = mid+1
            else 
                up = mid-1
        else
            if arr[[mid-1] > arr[mid+1]
                low = mid+1
            else 
                up = mid-1
    return -1

and get the following error:

   error: unmatched OUTDENT
            up = mid-1
binary_search=(arr,val)->
arr=arr.concat(arr)
下限=0;上部=arr.length-1
而上下>1
中间=数学楼层((下部+上部)/2)
如果arr[mid]是val
中途返回
如果arr[mid]arr[mid+1]
低=中+1
其他的
向上=中间1
返回-1
并获取以下错误:
错误:不匹配的OUTDENT
向上=中间1

我做错了什么?

这里的语法错误:
arr[[mid-1]
。除此之外,您正在创建一个空函数,因为整个代码块没有正确缩进。顺便说一句,我实际上不知道CoffeeScript,但下面是我解决问题的方法(也许您可以从中学习):我将您的代码复制到“Try CoffeeScript”。它说第17行有一个“unmatched OUTDENT”错误。在Google上搜索“unmatched OUTDENT”作为第一次点击返回(!)。它提到了不匹配的括号。如果你在第17行之前查找不匹配的括号,你可以很容易地找到
arr[[mid-1]
。语法错误修复后,代码将编译,您可以看到
二进制搜索
为空。谢谢!这是额外的括号。如果您添加注释作为答案,我将接受它。