Ruby FIzz buzz罐头';t将数字推送到数组中
所以,正如您所看到的,我对Ruby不太精通,所以如果您保持原始的响应,而不是使用快捷方式,这会有所帮助 在第一个示例中,我添加了绝对值方法来处理负输入,并使用变量轻松地适应将3和5更改为其他数字。但是,我不能将结果推送到数组中,结果是“1”。有人看到我哪里出错了吗Ruby FIzz buzz罐头';t将数字推送到数组中,ruby,fizzbuzz,Ruby,Fizzbuzz,所以,正如您所看到的,我对Ruby不太精通,所以如果您保持原始的响应,而不是使用快捷方式,这会有所帮助 在第一个示例中,我添加了绝对值方法来处理负输入,并使用变量轻松地适应将3和5更改为其他数字。但是,我不能将结果推送到数组中,结果是“1”。有人看到我哪里出错了吗 # not array - works class Fixnum define_method(:fizz_buzz) do fizz = 3 buzz = 5 1.upto(self.abs) do |i
# not array - works
class Fixnum
define_method(:fizz_buzz) do
fizz = 3
buzz = 5
1.upto(self.abs) do |i|
if (i % fizz == 0) && (i % buzz == 0)
puts "fizz-buzz"
elsif (i % fizz == 0)
puts "fizz"
elsif (i % buzz == 0)
puts "buzz"
else
puts i
end
end
end
end
# push to array - doesn't work
class Fixnum
define_method(:fizz_buzz) do
fizz = 3
buzz = 5
array = []
1.upto(self.abs) do |i|
if (i % fizz == 0) && (i % buzz == 0)
array.push("fizz-buzz")
elsif (i % fizz == 0)
array.push("fizz")
elsif (i % buzz == 0)
array.push("buzz")
else
array.push(i)
end
end
end
end
=> 1
WW您需要在函数末尾返回数组
class Fixnum
define_method(:fizz_buzz) do
fizz = 3
buzz = 5
array = []
1.upto(self.abs) do |i|
if (i % fizz == 0) && (i % buzz == 0)
array.push("fizz-buzz")
elsif (i % fizz == 0)
array.push("fizz")
elsif (i % buzz == 0)
array.push("buzz")
else
array.push(i)
end
end
array
end
end
在ruby中,函数的最后一行用作返回值。当您调用
1.upto
时,它将以指定的次数运行给定的块,然后返回1
。将array
添加到末尾会使其返回数组。该死!我总是忘记那部分。谢谢@rdubya