Czy są one takie same, gdy są używane w instrukcji if/else/end
? Co zazwyczaj robisz? Zastanawiam się, czy istnieją jakieś subtelne różnice lub przypadki krańcowe, w których odmiennie odpowiadałyby object
i !object.nil?
.Ruby: "if! Object.nil?" lub "jeśli obiekt"
Odpowiedz
Istnieją różnice. Na przykład:
false.nil?
# => false
Więc:
if !false.nil?
'foo'
end
# => "foo"
if false
'foo'
end
# => nil
Jak @tokland zasugerował, w większości przypadków za pomocą !obj.nil?
konstrukcja jest zbędne.
Dobrze. if object
będzie zachowywać się inaczej niż if !object.nil?
, jeśli object=false
.
To wszystko.
if object
testów, jeśli object
nie jest nil
lub false
.
!object.nil?
testów, jeśli object
nie jest nil
. (Rubydoc)
Więc kiedy object
jest false
, mają różne wartości.
Obiekty mogą zastępować nil?
, ale nie mogą być fałszywe, chyba że są zerowe lub fałszywe. Osobiście używam nil?
lub ActiveSupport's present?
, aby zachować tę elastyczność. Myślę też, że czyta się trochę lepiej.
Jest jeden i tylko jeden przypadek, w którym !object.nil?
i object
oceny do różnych wyników w kontekście logicznym i to jeśli object
jest false
. We wszystkich innych sytuacjach wynik jest taki sam.
Z tym, myślę, że możemy odebrać swoje prawdziwe pytanie (które brzmi: Czy jest jakaś sytuacja, w której muszę używać if !object.nil?
zamiast tylko if object
kiedy chroniąc przed object
będącej nil):
Nie, zawsze można użyj if object
, jeśli chcesz sprawdzić przed nil
.
- 1. szyny jeśli object.nil? to magia "" w poglądach?
- 2. jeśli vs if (x == false) w Ruby
- 3. Ruby - wyjście z bloku IF
- 4. Skrót dla „null, jeśli obiekt jest null lub object.member jeśli obiekt nie jest null”
- 5. szablon django if lub statement
- 6. Jeśli istnieje lub istnieje?
- 7. java Jeśli zagnieżdżony lub pojedynczy jeśli
- 8. `jeśli __name__ == '__main __'` odpowiednik w Ruby
- 9. złożony, jeśli() lub wyliczony?
- 10. Napisz funkcję, aby usunąć obiekt, jeśli istnieje
- 11. CMake IF (coś LUB coś innego)
- 12. Obiekt obiektu Ruby pusty, czy nie?
- 13. Ruby: target-less „przypadek”, w porównaniu do „if”
- 14. Ruby dostać klucze obiekt jako tablicy
- 15. hash ruby dodaj klucz/wartość, jeśli modyfikator
- 16. Jak przekierować po opóźnieniu, jeśli instrukcja if spełniła się
- 17. Django: Sprawdzanie, czy obiekt istnieje w queryset (IF ELSE)
- 18. if {} in if: endif
- 19. Skrót php jeśli/lub oświadczenie
- 20. Skróć JS jeśli lub oświadczenie
- 21. Wyjątek lub błąd ruby?
- 22. sprawdzanie komendy bash w instrukcji if w Ruby
- 23. case-statement lub if-oświadczenie perspektywa efektywności
- 24. mysql if not null, 0 lub ""
- 25. "if (fn) fn()" lub "fn && fn()"
- 26. IF a == true lub b == true oświadczenie
- 27. skrótem dla wielokrotności lub wyrażenia w if
- 28. MySql: czy można "SUMAĆ" lub "COUNT IF"?
- 29. Dlaczego SQL ocenia wyciągi w prawdziwej sekcji konstruktu if, nawet jeśli `if exists` zwraca false?
- 30. MySQL INSERT IF (zwyczaj if)
Nie jest to rubinowy sposób na napisanie 'if object.nil?.!' ;-) –