我厌倦了使用map
来解决fizzbuzz。
def fizzbuzz(n)
array =(1..n).to_a
array.map{|x|
if x % 3 == 0 && x % 5 == 0
x = 'FizzBuzz'
elsif x % 3 == 0
x = 'Fizz'
elsif x % 5 == 0
x = 'Buzz'
end
}
array
end
不知何故,它不起作用。你知道什么是错的吗?
答案 0 :(得分:4)
方法map
不会更改原始数组。请改用爆炸版map!
。
答案 1 :(得分:1)
根据@tmc的建议使用map!
以及其他一些更改尝试:
def fizzbuzz(n)
array =(1..n).to_a
array.map!{|x|
if x % 3 == 0 && x % 5 == 0
x = 'FizzBuzz'
elsif x % 3 == 0
x = 'Fizz'
elsif x % 5 == 0
x = 'Buzz'
else
x = x
end
}
p array
end
fizzbuzz(10) #=> [1, 2, "Fizz", 4, "Buzz", "Fizz", 7, 8, "Fizz", "Buzz"]
正如您所看到的,我已添加了对fizzbuzz
方法的调用,其参数为10
,您可以更改。我已经使用p
来检查数组以及最终的else
语句。