Tôi đang cố gắng để đánh giá biểu thức (a=10) || (rr=20)
khi biến rr không được định nghĩaLiệu || toán tử đánh giá đối số thứ hai ngay cả khi đối số đầu tiên là đúng?
vì vậy việc đánh rr
trong ruby console trước khi đánh giá sự biểu hiện trước trả
rr
NameError: undefined local variable or method `rr' for main:Object
from (irb):1
from :0
Khi tôi viết biểu thức (a=10) || (rr=20)
nó trả về 10, và khi tôi viết rr sau đó nó nói nil
(a=10) || (rr=20)
rr # => nil
vậy, tại sao điều này lại xảy ra? Không nên định nghĩa rr nếu đối số thứ hai của || toán tử được đánh giá, không bao giờ nên dựa trên tài liệu này?
Có sự khác biệt giữa các hoạt động có điều kiện ngắn mạch (không đánh giá điều kiện thứ hai nếu điều kiện đầu tiên là sai) và không khai báo biến. Vấn đề của bạn liên quan đến vấn đề thứ hai. – DOK
Biết khi nào một biến cục bộ nằm trong phạm vi của bạn thì khó khăn trong Ruby. Thử chạy 'a + 1 nếu a = 5'. Bạn có thể mong đợi rằng nó sẽ thiết lập một đến 5 và sau đó trở về 6, nhưng thực sự nó sẽ đặt 'a' và THEN phàn nàn về' a' là không xác định. –