Ruby三进制内部哈希构建

oknrviil  于 2023-11-18  发布在  Ruby
关注(0)|答案(3)|浏览(91)

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

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

字符串
一定有办法缩短时间。

taor4pac

taor4pac1#

当初学者使用文字truefalse时,这几乎总是不必要的。在这种情况下,你根本不需要三进制。

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

字符串

yqkkidmi

yqkkidmi2#

您需要使用=(赋值运算符)而不是=>来赋值。
试试看:

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

8mmmxcuj

8mmmxcuj3#

你可以使用splats:

{
  a: 1,
  **(true ? { b: 2 } : {})
}

# => { a: 1, b: 2 }

字符串

相关问题