红宝石块? : 表达式 [重复]
Posted
技术标签:
【中文标题】红宝石块? : 表达式 [重复]【英文标题】:Ruby block ? : expression [duplicate] 【发布时间】:2018-05-17 11:13:00 【问题描述】:col = ["a", "b", "c"]
col.map! |x| x == "b" ? x + "!" : x
=> ["a", "b!", "c"]
块中的?
和:
是什么意思/做什么?
尽我所能通过 ruby doc 搜索,但没有任何结果。
对于这些表达方式,我能做些什么?
帮助!
【问题讨论】:
搜索 三元运算符 或阅读文档here 【参考方案1】:使用col.map!
,您将代码块传递给数组中的每个元素,col。本例中的代码块是:if x == "b"
为 true then do x + "!"
else return x。
所以?
= 如果这是真的,那么就这样做
和
:
= 否则
【讨论】:
从 ? = if, : = else 有没有 elsif 的? 在:
之后你“嵌套”了操作符a = 3; a.zero? ? 'a' : a == 1 ? 'b' : 'c'
。
没有 elsif,因为 elsif 暗示我们的代码将返回三个或更多可能的值。对于三元运算符,代码块的第一部分将始终返回 true 或 false,因为我们要求的是 true 或 false 语句;所以我们只能得到两个可能的返回值。
糟糕,我的意思是在第一行说“可以”:没有 elsif,因为 elsif 暗示我们的代码可以返回三个或更多可能的值
(# Reverse all words of five more more letters in a string. Return the resulting; # string, e.g., reverse_five("Looks like my luck has reversed"); => "skooL like # my luck has desrever"
def reverse_five(str) str.split(" ").each |x| x.length >= 5 ? x.反向! : nil.join(" ") end reverse_five("apple banana cat") => "elppa ananab cat") 猜猜: nil
是没有办法避免的吧?以上是关于红宝石块? : 表达式 [重复]的主要内容,如果未能解决你的问题,请参考以下文章