Ruby问号运算符,这是啥意思? [复制]
Posted
技术标签:
【中文标题】Ruby问号运算符,这是啥意思? [复制]【英文标题】:Ruby question mark operator, what does this mean? [duplicate]Ruby问号运算符,这是什么意思? [复制] 【发布时间】:2021-07-12 23:46:40 【问题描述】:这可能是一个非常模糊的问题。但我想知道是否有人可以将其翻译成伪代码:
a = (1 + (bool ? rand(13) : 0)
这是否意味着a
将变为0-13 + 1 之间的任何值?布尔值和问号的作用是什么?
【问题讨论】:
布尔值和问号的用途是什么?我认为它没有任何意义,除非它被替换为变量。否则就像你提到的,a 等于 1 加上 0 到 12(含)之间的随机数。 谢谢塞巴斯蒂安!我将更改我的帖子以使问题更清楚。 见ternary if @loopy :我们不知道相关代码是否包含“布尔”值,特别是因为 Ruby 没有“布尔”数据类型。我们只知道bool
是一些变量或无参数的方法,它(由于三元if运算符)在布尔上下文中进行评估,即被视为trueish或falsy - 如果它的值为false
或nil
,则为后者。
【参考方案1】:
(true ? rand(13) : 0)
意思是 (if true then rand(13) else 0 end)
如果条件中直接有“true”,则永远不会调用“else”(没用),您可以直接写:a = 1 + rand(13)
;)
rand(13)
给出 0 到 12 之间的随机整数;)
如果你想要“13”,请输入rand(14)
我个人总是这样使用范围(所有范围都包括在内,更容易理解):rand(0..13)
【讨论】:
非常感谢!我将它从一个布尔变量更改为true
只是为了简单的问题。但是非常感谢您的解释!它清除了一切:)以上是关于Ruby问号运算符,这是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章