寻找一种在哈希分配中包含三元条件的方法。红宝石三元内部哈希版本
a = 5
h = {}
h[:alpha] => a > 3 ? true : false # edited twice
h[:alpha] => (a > 3 ? true : false) # edited twice
必须有一种方法来缩短这一点。
寻找一种在哈希分配中包含三元条件的方法。红宝石三元内部哈希版本
a = 5
h = {}
h[:alpha] => a > 3 ? true : false # edited twice
h[:alpha] => (a > 3 ? true : false) # edited twice
必须有一种方法来缩短这一点。
您需要使用=
(赋值运算符)而不是=>
赋值。
尝试:
h[:alpha] = a > 3 ? true : false
例子:
2.1.2-perf :001 > a = 5
=> 5
2.1.2-perf :002 > h = {}
=> {}
2.1.2-perf :005 > h[:alpha] = (a > 3 ? true : false)
=> true
2.1.2-perf :006 > h[:alpha]
=> true
编辑(按您的意见):
2.1.2-perf :014 > user = [1,2,3,4,5]
=> [1, 2, 3, 4, 5]
2.1.2-perf :016 > user[1] == "solo" ? "#{user[2]} #{user[3]} (s)" : "#{user[4]} (g)"
=> "5 (g)"
这是我目前的问题,在不同的语法:\t \t {:type => user [1], :name => user [1] .to_s ==“solo”? “#{user [2] user [3](s)}”:“#{user [4](g)}”, –
您需要使用'“#{user [2]}#{user [3] }(s)“'如果这是你所期待的 – Atri
已将其更改为此,并挂载在#{user [2]}上。用户[1] ==“独唱”?放置“#{user [2]}#{user [3]}(s)”:放置“#{user [4]}(g)” –
几乎总是当一个初学者使用文字true
或false
,这是不必要的。在这种情况下,你根本不需要三元组。
a = 5
h = {}
h[:alpha] = a > 3
h[:alpha] # => true
这是测试复合三元组。实际情况不同,这在上面的评论中。 –
@Rich_F不要在评论中提供重要信息。将其添加到您的问题中以清楚说明。 – sawa
@Rich_F也复合三元使代码气味。如果逻辑需要的不仅仅是一个如果其他三元不是最好的解决方案,而且你最好写一个方法来处理这个问题,那么很难读懂和解释。 – engineersmnky
你是不是指'h [:alpha =(a> 3?true:false)'? – eugen
是的,我很抱歉。我在解决这个问题之前开始了这个问题。 –
你是什么意思的“不工作”?这两个代码片段都将'true'分配给'h [:alpha]。你得到的行为是什么?你期望的行为是什么?什么是你正在得到确切的错误信息? –