就像其他人所说的那样,它被用作正则表达式的非捕获语法,但是,它也是正则表达式之外的有效ruby语法.
在ruby中?:是冒号字符的整数值:
% irb
irb> ?:
=> 58
irb ":"[0]
=> 58
Run Code Online (Sandbox Code Playgroud)
添加括号不会更改值: (?:) == ?:
当你添加spaces(? :)时,它是三元运算符,它本质上是ruby中if/then/else的简写,所以语句( bool ? truish : falsy )相当于
if bool then
truish
else
falsy
end
Run Code Online (Sandbox Code Playgroud)