Ruby Block语法

时间:2016-07-07 02:52:03

标签: ruby syntax boolean block

我正在浏览我在网上找到的一些代码并找到以下内容

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。这是结肠所代表的。如果块中方法的结果是布尔值,那么使用这样的冒号是否总是可以的?

2 个答案:

答案 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