使用 `map` 解决 'FizzBuzz'

Using `map` to solve 'FizzBuzz'

我厌倦了使用 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

不知何故,它不起作用。你知道怎么回事吗?

方法map不改变原数组。请改用 bang 版本 map!

按照@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 语句。