【发布时间】:2016-07-07 02:52:03
【问题描述】:
我正在浏览我在网上找到的一些代码并找到以下内容
def change input
('a'..'z').map { |letter| input.downcase.include?(letter) ? '1' : '0' }.join
end
我了解这段代码在做什么。它将接受一个字符串,检查字符串是否包含字母表中的每个字母,如果为真则返回 1,如果为假则返回 0。
但是我不熟悉这种语法:
?(letter) ? '1' : '0' }
我知道问号通常用于表示该方法将返回布尔结果。但我确信为什么在争论之后会有第二个问号。
另外,我知道如果为真则返回 1,如果为假则返回 0。这就是这个冒号所代表的。如果块中方法的结果是布尔值,是否总是可以使用这样的冒号?
【问题讨论】:
-
condition ? do_this_if_true : do_this_if_false -
这实际上会创建一个由 1 和 0 组成的字符串,而不仅仅是 1 或 0 - 只是为了清楚