Ruby三元内部哈希构建

Ruby三元内部哈希构建,ruby,hash,ternary,Ruby,Hash,Ternary,正在寻找在散列赋值中包含三元条件的方法 a = 5 h = {} h[:alpha] => a > 3 ? true : false # edited twice h[:alpha] => (a > 3 ? true : false) # edited twice 一定有办法缩短这个时间 您需要使用=赋值运算符而不是=>来赋值 尝试: 例如: 2.1.2-perf :001 > a = 5 => 5 2.1.2-perf :002 > h =

正在寻找在散列赋值中包含三元条件的方法

a = 5
h = {}
h[:alpha] => a > 3 ? true : false  # edited twice
h[:alpha] => (a > 3 ? true : false)    # edited twice

一定有办法缩短这个时间

您需要使用=赋值运算符而不是=>来赋值

尝试:

例如:

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)"

几乎总是当初学者使用字面上的真或假时,这是不必要的。在这种情况下,根本不需要三元数

a = 5
h = {}
h[:alpha] = a > 3
h[:alpha] # => true

这是我目前的问题,关于不同的语法:{:type=>user[1],:name=>user[1]。to_s==solo?{user[2]user[3]s}:{user[4]g},如果这是你所期望的,你需要使用{user[2]}{user[3]},如果这是你所期望的,把它改成那样,并且它挂在了{user[2]}。user[1]==solo?puts{user[2]}{user[3]}s:puts{user[4]}gremove puts来自ternaryDone。我想这是我的字符串插值失误。谢谢。那是为了测试复合三元。实际情况不同,这在上面的注释中。@Rich\u F不要在注释中添加重要信息。将其添加到您的问题中以使其清楚。@Rich\u F也复合三元有代码气味。这很难理解如果逻辑需要比if-else-then更多的东西,那么三元逻辑不是最好的解决方案,你最好写一个方法来处理这个问题。这是正确的答案。这应该是被接受的答案,而不是另一个包含语法错误甚至不能正确解析的答案。你说的不起作用是什么意思?都是代码片段s将true赋值给h[:alpha].你得到的行为是什么?你期待的行为是什么?你得到的确切错误信息是什么?那么你的问题是什么?你说你在寻找一种使用三元的方法,然后你展示了一种使用三元的方法,那么,你在寻找什么?以一种使现有答案无效的方式编辑你的问题是e非常粗鲁。这会使人们在回答问题时付出的辛勤劳动无效,并导致他们的答案因错误而被否决。你应该编辑你的问题的原因是,你根本不清楚你在问什么。标题说你在问关于三元运算符的问题,但你刚才没有告诉我你实际上对字符串插值有问题,但问题中没有提到字符串插值。在问题中,你说你正在寻找一种缩短你发布的代码的方法,但在对sawa答案的评论中,你说它没有回答你的问题。我我没有告诉你任何事情。我礼貌地提醒你,如果你想让其他人免费为你做工作,如果你能把问题编辑成一个不需要玩20个问题的游戏就可以回答的形状,那将是一件好事但不要改变它,因为如果你中途改变了问题,那么人们为免费完成你的工作所付出的所有努力都将白费。
a = 5
h = {}
h[:alpha] = a > 3
h[:alpha] # => true