Я занимаюсь курсом по изучению Ruby. Все идет хорошо, за исключением того, что я не могу окунуться в это поведение блока.Смутно о поведении блоков в Ruby
RSpec:
describe "adder" do
it "adds one to the value returned by the default block" do
adder do
5
end.should == 6
end
it "adds 3 to the value returned by the default block" do
adder(3) do
5
end.should == 8
end
end
Код, который не проходит:
def adder(x)
yield + x
end
другой код, который не проходит:
def adder x
x = 1
yield + x
end
код, который проходит:
def adder x = 1
yield + x
end
Для меня оба непереходящих кода имеют логический смысл. Я пробовал искать в Интернете по той причине, что последний проходит, а другие нет, но мне не повезло. Может ли кто-нибудь объяснить, почему?
спасибо.