Nếu tôi có:Phạm vi của một biến địa phương trong một khối
2.times do
i ||= 1
print "#{i} "
i += 1
print "#{i} "
end
tôi nhận được 1 2 1 2
, trong khi tôi đã mong 1 2 2 3
. Tại sao i
mất nhiệm vụ khi vòng lặp bắt đầu lại? Nó hoạt động như mong đợi nếu nhiệm vụ xảy ra bên ngoài vòng lặp, vì vậy tôi đoán nó phải làm với phạm vi, nhưng tôi đã không nhận ra các vòng có phạm vi riêng của họ. Ai đó có thể làm rõ?
Cập nhật: Cảm ơn sự giúp đỡ về điều này. Một phần của sự nhầm lẫn của tôi xuất phát từ việc đến với Ruby từ Python, mà không có phạm vi khối (tôi nghĩ).
là thế này cho các mục đích sư phạm? bởi vì loại mã này hoàn toàn không đơn điệu ... – tokland