Nicht-Block-Variablen sind obligatorisch:Warum sind Blockvariablen optional?
def foo arg = nil; end
foo # => nil
Aber Blockgrößen sind optional:
def foo █ end
foo # => nil
def foo arg; end
foo # => ArgumentError
Um optionale Argumente zu ermöglichen, wird ein Standardwert zugeführt werden muss,
Ohne einen Standardwert wird eine abwesende Blockvariable nil
zugewiesen, und Blockvariablen können keine Standardwerte annehmen:
def foo &block = ->{puts :foo}; end
# => syntax error
Im Gegenteil, ein Verfahren einen zusätzlichen Block nehmen, die nicht in der Definition erforderlich:
def foo; end
foo{puts :foo} # => nil
Was ist der Vorteil von Blockgrößen ist wie diese nicht-Block im Gegensatz ausgebildet ist, Variablen?