`try` - Methode, wenn Sie versuchen zu Holen hash-Wert
Ich versuche zu vermeiden, dass eine Fehlermeldung beim ziehen von einem hash die möglicherweise oder möglicherweise nicht über einen Wert verfügen. Entweder ich will es zurück den Wert oder die Rendite gleich null.
Ich dachte, die try
Methode würde es tun, aber ich bin noch immer ein Fehler.
key not found: "en"
Mein hash ist eine hstore-Spalte genannt content
... content['en']
usw.
content = {"es"=>"This is an amazing event!!!!!", "pl"=>"Gonna be crap!"}
Versuchen Sie Methode
@object.content.try(:fetch, 'en') # should return nil, but errors even with try method
Ich dachte, das würde funktionieren, aber es funktioniert nicht. Wie sonst kann ich wieder ein nil
statt einen Fehler?
Auch, das Inhalt-Feld selbst kann auch nil
so aufrufen content['en']
wirft:
undefined method `content' for nil:NilClass
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie müssen, um für
object.content.nil?
, dann würden Sie verwendentry
. Wenn Sie zulassen möchten, für das ein Schlüssel fehlt, dann wollen Sie nichtfetch
(wie Priti Noten), Sie wollen die normale[]
Methode. Die Kombination der beiden ergibt:Beobachten:
Könnten Sie auch
object.content.try(:fetch, 'en', nil)
wenn:[]
sieht aus wie es ist lustig, Sie.object.content.try(:fetch, 'en', nil)
wenn:[]
sieht aus wie es ist lustig, Sie. - ich mag deine diese Aussage..Hash#fetch
mein Lieblings-Methode.. :))Sehen die Hash#fetch
So verwenden:
h.fetch('z', nil)
wäre die Ausnahme nicht werfen-version dann.Benutzen Sie einfach die normale Indizierung:
Als Ruby 2.0, mit
try
auf eine möglicherweisenil
hash ist nicht ordentlich. Sie könnenNilClass#to_h
. Und für die Rückkehrnil
wenn es keinen Schlüssel, das ist genau das, was[]
ist, im Gegensatz zu dem, wasfetch
ist für.