Chúng có giống nhau khi được sử dụng trong tuyên bố if/else/end
không? Bạn thường làm gì? Tôi tự hỏi nếu có bất kỳ sự khác biệt hoặc trường hợp cạnh nào khác biệt, trong đó object
và !object.nil?
sẽ phản hồi khác nhau.Ruby: "if! Object.nil?" hoặc "nếu đối tượng"
Trả lời
Có sự khác biệt. Ví dụ:
false.nil?
# => false
Vì vậy:
if !false.nil?
'foo'
end
# => "foo"
if false
'foo'
end
# => nil
Như @tokland đề nghị, trong hầu hết các trường hợp sử dụng !obj.nil?
xây dựng là không cần thiết.
@Downvoter bạn có thể giải thích? –
Không, chúng không giống nhau. – sawa
@sawa đó là những gì tôi đã viết. –
Vâng. if object
sẽ hoạt động khác với if !object.nil?
nếu object=false
.
Đó là về nó.
if object
kiểm tra xem object
không phải là nil
hoặc false
.
!object.nil?
kiểm tra nếu object
không phải là nil
. (Rubydoc)
Vì vậy, khi object
là false
, chúng có các giá trị khác nhau.
Đối tượng có thể ghi đè nil?
nhưng chúng không thể sai trừ khi chúng không đúng hoặc không đúng. Cá nhân tôi sử dụng nil?
hoặc present?
của ActiveSupport để tôi duy trì sự linh hoạt đó. Tôi cũng nghĩ rằng nó đọc tốt hơn một chút.
Có một và chỉ một trường hợp trong đó !object.nil?
và object
đánh giá kết quả khác nhau trong một bối cảnh boolean và đó là nếu object
là false
. Trong tất cả các tình huống khác kết quả là như nhau.
Với điều này, tôi nghĩ rằng chúng tôi có thể trả lời câu hỏi thực sự của bạn (đó là: Có bất kỳ tình huống mà tôi phải sử dụng if !object.nil?
thay vì chỉ if object
khi bảo vệ chống lại object
là con số không):
Không, bạn luôn có thể sử dụng if object
nếu bạn muốn kiểm tra lại nil
.
- 1. nếu vs if (x == false) trong ruby
- 2. Nếu else if hoặc Chuyển trường hợp
- 3. nếu {} in if: endif
- 4. Thực hành tốt nhất: if (foo == false) hoặc nếu
- 5. Ruby - thoát khỏi khối IF
- 6. Đối tượng find_first của Ruby Array?
- 7. Detect nếu một đối tượng là trống
- 8. Xóa đối tượng giống hệt trong Ruby?
- 9. Đối tượng đông lạnh trong Ruby
- 10. Đối tượng chuỗi Ruby rỗng hay không?
- 11. Đối tượng cũ đồng bằng trong Ruby?
- 12. `if __name__ == '__main __'` tương đương trong Ruby
- 13. if (a = null && một instanceof A!) ... hoặc nếu (a instanceof A)
- 14. Nếu đối tượng là Danh sách chung
- 15. IRB - Cú pháp băm Ruby 1.9.x: {if: true} không bằng {: if => true}
- 16. đối tượng So sánh trong ruby
- 17. Thiết kế hướng đối tượng với Ruby
- 18. DRY'er Khởi tạo đối tượng trong Ruby
- 19. phức tạp if() hoặc enum?
- 20. Sự khác biệt hiệu suất, nếu có, giữa if (! Foo) và if (foo == false) trong Java?
- 21. #define hoặC#if error statement
- 22. jQuery 'if .change() hoặc .keyup()'
- 23. DDD: Các đối tượng kết nối là đối tượng thực thể hoặc đối tượng giá trị?
- 24. javascript: Kiểm tra nếu một đối tượng không có tài sản hoặc nếu một bản đồ/kết hợp mảng trống
- 25. Django: Nhận dạng đối tượng DB hoặc 'Không' nếu không có gì khớp với
- 26. iOS không thể kiểm tra nếu đối tượng là null
- 27. Làm thế nào tôi có thể kiểm tra nếu một đối tượng là null trong ruby trên đường ray 2?
- 28. Struct hoặc đối tượng trong Powershell 2
- 29. Đối tượng Ruby có giới hạn kích thước không?
- 30. Bản đồ Ruby() cho một đối tượng duy nhất
Không phải là cách ruby để viết 'nếu object.nil?.!' ;-) –