在Ruby中未调用块

在Ruby中未调用块,ruby,Ruby,我尝试了以下代码: def m return yield if block_given? "no block" end puts m do x = 2 y = 3 x*y end 为什么输出是“无阻塞”? 我把块构造成m的方法有什么问题? {“测试”}将起作用。在put puts(m do x = 2 y = 3 x * y end) 输出为6 您的代码相当于 puts(m) do x = 2 y = 3 x * y end 移除放置: de

我尝试了以下代码:

def m
  return yield if block_given?
  "no block"
end

puts m do
  x = 2
  y = 3
  x*y
end
为什么输出是“无阻塞”? 我把块构造成m的方法有什么问题?
{“测试”}将起作用。

put

puts(m do
  x = 2
  y = 3
  x * y
end)
输出为6

您的代码相当于

puts(m) do 
  x = 2
  y = 3
  x * y
end

移除
放置

def m
  return yield if block_given?
  "no block"
end

m do
  x = 2
  y = 3
  x*y
end

它将始终返回
m
块中的最后一条语句。

谢谢。但是为什么测试会起作用呢?我现在知道了。谢谢:)这个问题已经在、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、和中得到了回答。