我正在浏览我在网上找到的一些代码并找到以下内容
def change input
('a'..'z').map { |letter| input.downcase.include?(letter) ? '1' : '0' }.join
end
我理解这段代码在做什么。它将采用一个字符串,检查字符串是否包含字母表中的每个字母,如果为true则返回1,如果为false则返回0.
但是我对这段语法不熟悉:
?(letter) ? '1' : '0' }
我知道问号通常用于表示该方法将返回一个布尔结果。但我确信为什么争论后会有第二个问号。
另外,据我所知,如果为true,则返回1,如果为false则返回0。这是结肠所代表的。如果块中方法的结果是布尔值,那么使用这样的冒号是否总是可以的?
答案 0 :(得分:1)
格式boolean_expression ? option_a : option_b
称为三元运算符。它是
if boolean_expression
option_a
else
option_b
end
答案 1 :(得分:0)
第一个问号是#include? method
的一部分探险condition ? if_true : if_false
被称为三元运算符,是
if condition
if_true
else
if_false
end