我正在尝试编写用于线性搜索的咖啡脚本,但是我被困在除了最后一行的值之外还要返回一个值的位置。 这是我的代码片段:
Linear_Search = (array, desired) ->
for x in array
do ->
if x is desired
return true
false
array = [2, 4, 6, 7, 3, 1, 5]
if Linear_Search(array, 4)
console.log("Found")
else
console.log("Not Found")
if Linear_Search(array, 9)
console.log("Found")
else
console.log("Not Found")
运行此脚本后,我得到了答案
"Not Found"
"Not Found"
我尝试过删除return关键字等各种内容。但它们似乎没有起作用。帮助我学习这项非常棒的技术。
答案 0 :(得分:2)
你的功能有缺陷
Linear_Search = (array, desired) ->
for x in array
do ->
if x is desired
return true
false
应该是:
Linear_Search = (array, desired) ->
for x in array
found = do (x) ->
x is desired
return true if found
false
do
创建一个内部函数(闭包),它的响应在你的函数中没有被考虑。我不确定它是否会增强这种情况下的功能(可能有一个原因我错了 - 如果情况如此,那么有更多知识的人会希望权衡)。
我会写
Linear_Search = (array, desired) ->
for x in array
return true if x is desired
false