理解`do` ...`end`

时间:2016-04-04 02:43:22

标签: ruby

我执行了以下操作:

def add(x, y)
  return x+y
end

result = add(4, 5) do
  puts "heeeeyyy"
end

result #=> 9

我也将return更改为puts,但结果相同。请向我解释。

1 个答案:

答案 0 :(得分:1)

块需要收益,否则不会被执行

def add(x, y)
   yield if block_given?
   return x+y;
end

如果要在块中打印结果,则:

   def add(x, y)
       yield x+y if block_given?
       return x+y;
    end

   result = add(4, 5) do |result|
     puts result
   end