Для l oop не работает с длиной строки в Ruby irb - PullRequest
0 голосов
/ 04 августа 2020

В irb, bash shell, на ma c. Как видите, a - это определенный массив. Если указать длину в паре, нет никакой разницы. На выходе должен быть массив, но он не отображается.

>> a
=> ["ant", "bat", "cat", "42"]
?> for i in 0..a.length do
?>       puts a[i]
>> end
?>

l oop - это упражнение в этом руководстве: ссылка , но за платным доступом. В тексте это выглядит так:

Listing 3.3: Combining array access and a for loop.

>> for i in 0..a.length do
?>   puts a[i]
>> end
ant
bat
cat
42

Я предполагаю, что проблема в a.length, потому что работает следующее:

?> for i in 0..3 do
?>     puts a[i]
>> end
ant
bat
cat
42

=> 0..4

Что мне не хватает? Спасибо.

1 Ответ

0 голосов
/ 04 августа 2020

Решено.

@ Cremno выигрывает куклу kewp ie. Даже полезный код, предоставленный @benjessop, не работал, пока я не пропустил «делать» в каждом из них. Затем все работает так, как должно, включая мой исходный пример.

Итак, решение: просто удалите 'do'

Чтобы было ясно, 'do' работает, если диапазон равен 0. .3 (или, я полагаю, любой числовой диапазон), но как только я заменяю 3 переменной len или a.length, в том числе «do» означает, что после «конца» появляется?>, За которым ничего не следует. Снова набирать "конец" бесполезно. Мне нужно ^ C из л oop.

...