если оператор выполняется только с индексом 2 цикла for - PullRequest
0 голосов
/ 22 января 2019

У меня есть это для цикла в моем coffeescript:

compareVersions = (current, minimum) ->
    console.log('current ', current)
    console.log('minimum ', minimum)
    current_parts = current.split '.'
    minimum_parts = minimum.split '.'
    for partIndex in [0..Math.min(current_parts.length, minimum_parts.length)]
       console.log('partIndex ', partIndex)
       if (+current_parts[partIndex] || 0) < (+minimum_parts[partIndex] || 0)
         console.log('current_parts.length1 ', current_parts[partIndex])
         console.log('minimum_parts.length1 ', minimum_parts[partIndex])
         return false
    console.log('PC current_parts.length2 ', current_parts[partIndex])
    console.log('PC minimum_parts.length2 ', minimum_parts[partIndex])
    true

Он предназначен для сравнения версий программного обеспечения и возврата false, если текущая версия ниже минимальной версии.

Я добавил console.log, чтобы показать, что происходит.

Это вывод, который я получаю. В этом случае текущая версия является хигнером, чем минимум, но оператор if выполняется только для индекса 2, который в этом случае имеет меньшее значение для текущего, чем для минимального.

current  3.4.1.35
minimum  3.3.3
partIndex  0
partIndex  1
partIndex  2
current_parts.length1  1
minimum_parts.length1  3

Оператор if должен выполняться для каждой итерации цикла for. Что здесь плохого, что мешает этому?

1 Ответ

0 голосов
/ 22 января 2019

Оператор if выполняется на каждой итерации цикла for, но current_parts.length1 иimum_parts.length1 печатаются, когда оператор if равен true.

Выполнение вашего оператора if будет:

3 < 3 false
4 < 3 false
1 < 3 true
    print current_parts.length1
    print minimum_parts.length1

Если вы хотите показать current_parts.length1 иimum_parts.length1, поместите их вне оператора if, чтобы увидеть значения, когда оператор if будет выполняться.

...