我有以下代码
def assert
raise "Assertion failed!" unless yield
end
swear = "shoot"
assert { swear == "shoot" }
assert { swear == "snot head" }
这里有两件事我需要更多解释他们正在做什么。
大括号和里面的内容到底是做什么的。我有一个普遍的感觉,它以某种方式通过比较,但有什么可以/不能放在那里。我尝试用puts语句替换它似乎忽略了。它做了什么?
产量是多少?它是否执行大括号中的内容并且它仅适用于true / false?
答案 0 :(得分:1)
yield
关键字将执行传递给方法的块。 assert { swear == "shoot" }
实际上将块发送到assert
方法。由于块的评估是true
,因此不会引发异常。虽然{ swear == "snot head" }
为false,但assert
方法会引发异常。