我下面有一些给出平方数的代码。我还编写了一个简单的测试,可以打印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
。
我想知道是否有人可以帮忙看看原因。
答案 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
数组。