这行代码是什么意思?!哈希[]里面

Wes*_*ter 1 ruby ruby-on-rails

这是代码行:

options[:selectors] = [[1, "Spain"], [2, "Italy"]]
v = "Monthly"

value = Hash[options[:selectors]][!!(v =~ /^[0-9]+$/) ? v.to_i : v]
Run Code Online (Sandbox Code Playgroud)

我不确定的主要部分是最后一行的这一部分:

[!!(v =~ /^[0-9]+$/) ? v.to_i : v]
Run Code Online (Sandbox Code Playgroud)

什么[!!意思,什么=~意思?最后,总体线是什么意思?

Sam*_*Sam 5

!!是一个成语,意思是"将此值更改为布尔值".第一个!进行类型转换,第二个!进行恢复语义,同时保持布尔值.

不过,这在红宝石中并不合适.我相信这是一个PHPism.

=~ 是一个正则表达式匹配.

最后,整个事情意味着"如果v是一个int字符串,则使v为整数类型并从散列中获取,否则使用该字符串作为键."