如何在Ruby中做一个简单的测试

时间:2018-10-24 19:21:59

标签: ruby

我下面有一些给出平方数的代码。我还编写了一个简单的测试,可以打印truefalse

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 :(得分:1)

尝试下面的代码以获得答案:

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。因此,您必须修改代码。

答案 1 :(得分:1)

在您的代码[(Key, Int)]中返回范围(1..20),这是在完成numbers.each do |number| .. end循环之后测试将分配给的值。因此,即使您删除了行numbers,test仍将具有值(1..20)。因此,使用puts number* number是将值保留在数组中的正确选择。但是,您应该首先删除map,因为它会在屏幕上显示值,但返回puts。因此,如果您使用nil但未删除map,则会将测试分配给puts数组。