Ruby case equality operator === 简析

Python09

Ruby case equality operator === 简析,第1张

# 作业1:case equality operator 调研

##1、概述

“===”是case equality operator,用于在case/when语句中判断是否进入某个分支的依据。

个人理解,这个操作符判断的是,符号右边的对象能否被划入到左边对象表示的含义范围内,如果是,则判断为true,不是则为false。

##2、实验验证:

|    左边    |    右边    |    结果    |    原因    |

|:----------:|:----------:|:----------:|:----------:|

|1|1|true|相同的对象|

|1.0|1|true|表示的对象实际是同一个|

|“1”|1|false|左边是字符串,右边是数值|

|(1..2)|2|true|2在范围(1..2)中|

|(1...2)|2|false|2不包含在范围(1...2)中|

|Float|5.0|true|5.0是浮点型数值|

|/a|e|i|o|u/|hello|true|hello中能匹配到元音字母|

|hello|/a|e|i|o|u/|false|hello不全由元音字母组成|

查询核心模块Kernel API可知:

如果是Float类型则通过Kernel.Float(字符串)判断,这里不能转为浮点数则会抛出异常。你只需再捕获一下输出自己的信息就行。

如果不想多次随机并检测是否已经存在, 那可以先生成你要的范围, 然后用sample

当然这么做并不适用于范围超级大的时候

range = (1..1000).to_a

p range.sample(5)

以上可以取得5个不重复的1-1000内的数字