Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Массив, добавление строк - gets 
:(
    Опции темы
antonsav
Дата 11.6.2012, 05:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.6.2012

Репутация: нет
Всего: нет



Ребята, что делаю не так? пытаюсь добалять строки в массив с клавиатуры, однако добавляется только каждая вторая строка.
То есть при 1 enter 2 enter 3 enter 4 enter enter, массив в итоге принимает вид: 2, 4

Цитата

adt = []

while gets.chomp != ''
adt.push gets.chomp
end 

puts adt


PM MAIL   Вверх
WarHog
Дата 12.6.2012, 02:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Ты два раза считываешь значения (два вызова gets), а заносишь в массив только второе из них (когда выполняется 3-я строчка). Нужно что-то вроде
Код

foo = []
while line = gets do
  line.chomp!
  break if line == ''
  foo << line
end

--------------------
PM MAIL   Вверх
antonsav
Дата 13.6.2012, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 11.6.2012

Репутация: нет
Всего: нет



WarHog, ок, спасибо! понял
PM MAIL   Вверх
Rikkit
Дата 13.6.2012, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 19.7.2011

Репутация: нет
Всего: нет



Цитата(WarHog @ 12.6.2012,  02:04)
Ты два раза считываешь значения (два вызова gets), а заносишь в массив только второе из них (когда выполняется 3-я строчка). Нужно что-то вроде
Код

foo = []
while line = gets do
  line.chomp!
  break if line == ''
  foo << line
end

Можно еще короче

Код

foo = []
while (line = gets.chomp) != '' do foo << line end


Это сообщение отредактировал(а) Rikkit - 13.6.2012, 12:14
PM MAIL   Вверх
WarHog
Дата 13.6.2012, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 20.10.2007
Где: Воронеж

Репутация: нет
Всего: 2



Можно и так, только так будет некорректно обрабатываться конец ввода (ctrl-D, в простейшем варианте). gets вернет nil и программа выдаст NoMethodError исключение.
--------------------
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Ruby: Общие вопросы"
source777
  • С чего начать? начинаем
  • Ссылки на полезные ресурсы смотрим тут
  • Обязательно следуйте правилам Vingrad.
  • Пожалуйста, прочитайте рекомендации по работе в форуме и навигации по Vingrad.
  • Для вставки кодов Ruby используйте тег: [code=ruby]код[/code]. Когда в будущем подсветка синтаксиса для Ruby будет реализована, весь исходных код преобразится.
  • Используйтe чекбокс "Транслит" (возле кнопок кодов), если у Вас нет русских шрифтов.
  • Помните, для каждого вопроса должна быть своя тема.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, source777.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Ruby: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1407 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.