Ruby:使用块迭代方法的结果

Ruby:使用块迭代方法的结果,ruby,Ruby,现在我有了这样的红宝石: def fizzbuzz(numize) 结果=[] 1.最多(numize)do | num| 如果num%15==0 结果该块被赋予了你的方法,但你没有利用它。这是一个简单的解决方案: def fizzbuzz(numSize和block) # ... (现行守则)。。。 结果。映射(&block) 结束 其中,使用map转换结果值 注意这需要修复打印块中的打字错误,该块是i1tem而不是项 同样值得注意的是,您应该避免这种模式: x = [ ] y.each

现在我有了这样的红宝石:

def fizzbuzz(numize)
结果=[]
1.最多(numize)do | num|
如果num%15==0

结果该块被赋予了你的方法,但你没有利用它。这是一个简单的解决方案:

def fizzbuzz(numSize和block)
# ... (现行守则)。。。
结果。映射(&block)
结束
其中,使用
map
转换结果值

注意这需要修复
打印
块中的打字错误,该块是
i1tem
而不是

同样值得注意的是,您应该避免这种模式:

x = [ ]
y.each do |v|
  x << f(v)
end
x
其中,当您从源代码以1:1的比例进行转换时,只需使用
map

在您的例子中,这将代码简化为一种更简单的形式,重复次数更少:

def fizzbuzz(numSize和block)
1.最多(numize).map do|num|
如果num%15==0
“嘶嘶作响”
elsif num%3==0
“嘶嘶”
elsif num%5==0
“嗡嗡声”
其他的
数字至
结束
结束。映射(&block)
结束

注意:Ruby是一种区分大小写的语言,大写字母在语法上有特定的含义。变量和方法名称应为小写字母。大写字母表示形式为
ClassName
CONSTANT\u NAME
的常量。非常感谢。但是,如果我想要两个结果,比如[“1”,“2”]如果我调用fizzbuzz(2)和[“-1-”,“-2-”]如果我调用fizzbuzz(2){| item |“-#{item}-”,那么我该如何使用block来更改代码呢。将其包装在
if(给定块?
中。
y.map do |v|
  f(v)
end