zmienne dla blokowe są obowiązkowe:Dlaczego zmienne blokowe są opcjonalne?
def foo arg; end
foo # => ArgumentError
W celu umożliwienia opcjonalne argumenty, wartość domyślna musi być dostarczona:
def foo arg = nil; end
foo # => nil
zmienne
Ale blokowe są opcjonalne:
def foo █ end
foo # => nil
Bez wartości domyślnej brak zmiennej blokowej jest przypisywany nil
, a zmienne blokowe nie mogą przyjmować wartości domyślnych:
def foo &block = ->{puts :foo}; end
# => syntax error
Wręcz przeciwnie, metoda może wziąć dodatkowy blok, który nie jest wymagany w definicji:
def foo; end
foo{puts :foo} # => nil
co jest zaletą zmiennych pakietowych jest zaprojektowany tak, w przeciwieństwie do braku bloku zmienne?