biến Non-block là bắt buộc:Tại sao các biến khối tùy chọn?
def foo arg; end
foo # => ArgumentError
Để cho phép đối số tùy chọn, giá trị mặc định phải được cung cấp:
def foo arg = nil; end
foo # => nil
biến
Nhưng khối là không bắt buộc:
def foo █ end
foo # => nil
Nếu không có giá trị mặc định, biến khối vắng mặt được gán nil
và trên thực tế, các biến khối không thể nhận giá trị mặc định:
def foo &block = ->{puts :foo}; end
# => syntax error
Ngược lại, một phương pháp có thể mất một khối bổ sung mà không được yêu cầu trong định nghĩa:
def foo; end
foo{puts :foo} # => nil
là gì lợi thế của các biến khối được thiết kế như thế này như trái ngược với phi-block biến?