Chỉ cần tò mò về nó.Hành vi lạ với '_' (gạch dưới) trong Ruby
Nếu bạn mở IRB và gõ _
, bạn sẽ nhận được nil
như phản ứng:
irb(main):001:0> _
=> nil
Và bạn có thể thay đổi giá trị của nó:
irb(main):002:0> _ = 'some value'
irb(main):003:0> _
=> "some value"
Nhưng nếu bạn tạo một biến mới với _
, giá trị của nó được sửa đổi:
irb(main):004:0> foo_bar = 'other value'
irb(main):005:0> _
=> "other value"
Tại sao? Đây có phải là quyết định thiết kế không?
Đó thực sự là một tính năng tiện dụng. Nếu bạn muốn lưu kết quả của hoạt động cuối cùng của bạn: 'a = _'. Tôi thường sử dụng 'irb' như một máy tính tiện dụng, vì vậy bạn có thể dễ dàng xâu chuỗi những thứ: '_/1e6' chẳng hạn. – tadman
Một số ý nghĩa thú vị hơn cho gạch dưới được trình bày [Ở đây] (http://idiosyncratic-ruby.com/33-too-expressive.html#underscore-4-syntactical-meanings) chẳng hạn như dấu phân tách hình ảnh ('1_000_000') hoặc tham số bị bỏ qua 'object.each {| _, v | ...} ' – engineersmnky