2016-07-07 2 views
0

Я пытался написать сценарий кофе для линейного поиска, но я застрял в точке, где мне нужно вернуть значение, а также значение в последней строке. Вот мой фрагмент кода:Линейный поиск с использованием сценария кофе

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»

Я пробовал различные вещи, как удаление возвращения ключевого слова. Но они, похоже, не работают. Помогите мне узнать эту удивительную технологию.

Compile Online

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf –

+0

Спасибо, но я был на самом деле искал помощи в coffeescript. – jainaman224

+0

javascript * есть * coffeescript. Этот метод работает одинаково в обоих случаях. –

ответ

1

Ваша функция несовершенна

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 
+0

Спасибо. Это сработало для меня. – jainaman224

+0

[«При использовании цикла JavaScript для генерации функций обычно вставлять оболочку закрытия, чтобы гарантировать, что переменные цикла закрыты, и все сгенерированные функции не просто разделяют конечные значения. CoffeeScript предоставляет' do' ключевое слово, которое немедленно вызывает переданную функцию, пересылая любые аргументы. "] (http://coffeescript.org/#loops)' do' не требуется, канонический случай для 'do' заключается в том, чтобы избежать блуждающих ссылок при построении функции внутри цикла. –

+0

Спасибо за информацию! –

Смежные вопросы