false 我预计它会返回: =-6ren">
gpt4 book ai didi

ruby - 为什么我在三元条件下会得到意想不到的结果?

转载 作者:数据小太阳 更新时间:2023-10-29 08:18:33 24 4
gpt4 key购买 nike

谁能给我解释一下这个结果:

(trad = {foo: "Foo", bar:"Bar"}).has_key? :foo ? trad[:foo] : :foo
=> false

我预计它会返回:

=> "Foo"

最佳答案

(trad = {foo: "Foo", bar:"Bar"}).has_key? :foo ? trad[:foo] : :foo

就像:

(trad = {foo: "Foo", bar:"Bar"}).has_key? (:foo ? trad[:foo] : :foo)

:富? trad[:foo] : :foo 被评估为 "Foo" 因为 :foo 被视为真值。

(trad = {foo: "Foo", bar:"Bar"}).has_key? “Foo” 产生 false 因为没有“Foo”键。


使用以下(用括号覆盖优先级)获得预期结果:

>> ((trad = {foo: "Foo", bar:"Bar"}).has_key? :foo) ? trad[:foo] : :foo
=> "Foo"

Hash#fetch(key, default)似乎更合适:

>> {foo: "Foo", bar:"Bar"}.fetch(:foo, :foo)
=> "Foo"
>> {foo: "Foo", bar:"Bar"}.fetch(:baz, :baz)
=> :baz

关于ruby - 为什么我在三元条件下会得到意想不到的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com