Как сделать простой тест в ruby - PullRequest
0 голосов
/ 24 октября 2018

У меня есть код ниже, который дает квадратные числа.Я также написал простой тест, который печатает true или false.

numbers = (1..20)
test=numbers.each do |number|
  puts number * number
end

puts test == [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]

Я ожидаю, что он напечатает true, но он ставит false.

Мне было интересноесли кто-нибудь может помочь понять, почему.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

В вашем коде numbers.each do |number| .. end возвращает диапазон (1..20), и это значение будет присвоено тесту после выполнения цикла через numbers.Таким образом, даже если вы удалили строку puts number* number, test все равно будет иметь значение (1..20).Поэтому использование map будет правильным выбором для сохранения ваших значений в массиве.Но вы должны сначала удалить puts, потому что он показывает значение на экране, но возвращает nil.Поэтому, если вы использовали map, но не удалили puts, тест будет назначен массиву nil с.

0 голосов
/ 24 октября 2018

Попробуйте следующий код, чтобы получить ответ:

numbers = (1..20)
test = numbers.map{|a| a*a}
puts test == [1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400]

Вы используете первый тест , содержимое которого 1..20.Поэтому вы должны изменить свой код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...