ruby三重等于
发布时间:2020-12-16 19:30:48 所属栏目:百科 来源:网络整理
导读:假设我有以下代码. result = if a.is_a?(Class) a = Exception a.nameelsif ...elsif ...end 我重写了这段代码 case awhen Exception a.namewhen ...when ...end 我明白三位一体吗? 解决方法 我们无法判断你是否真的得到这样一个有限例子的===.但是,当您使
假设我有以下代码.
result = if a.is_a?(Class) && a <= Exception a.name elsif ... elsif ... end 我重写了这段代码 case a when Exception a.name when ... when ... end 我明白三位一体吗? 解决方法
我们无法判断你是否真的得到这样一个有限例子的===.但是,当您使用===显式或隐式地作为case / when语句(例如示例中使用的)语句的一部分时,这是一个细分.
三元组(===)有许多不同的实现,这取决于左边的类.这只是一个中介符号的===方法.意思是以下语句是相同的: a.=== b a === b 差异看起来不是很多,但是这意味着左侧的===方法被调用,而不是在语言层面上定义的一些魔术运算符,就像==但不完全相同.相反,===在每个使用它的类中定义,也许在一个继承的类或Mixin中. 三元组的一般定义等于它将返回true,如果两个部分是相同的,或者右部分包含在左边的范围内. 在Class ===的情况下,如果参数是类(或子类)的实例,操作将返回true.在左侧是正则表达式的情况下,当右侧与正则表达式匹配时,返回true. case的时候是一个隐含的===,它使用===比较case变量到when子句,以便以下两个语句产生相同的结果. case a when String puts "This is a String" when (1..3) puts "A number between 1 and 3" else puts "Unknown" end if String === a puts "This is a String" elsif (1..3) === a puts "A number between 1 and 3" else puts "Unknown" end 检查您在===左边使用的类型的文档,或者在when语句中确定正确的方式. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |