为什么Ruby没有!==运算符?
发布时间:2020-12-17 01:51:08 所属栏目:百科 来源:网络整理
导读:Ruby中的所有相等都是“严格的”,类似于 PHP中的===吗?我注意到Ruby中有一个===运算符,但它做了不同的事情. 解决方法 ===不是一个相等运算符! 不. 但是,它是什么? 您可能熟悉===作为Javascript和PHP中的相等运算符,但这不是Ruby中的相等运算符,并且与其他
Ruby中的所有相等都是“严格的”,类似于
PHP中的===吗?我注意到Ruby中有一个===运算符,但它做了不同的事情.
解决方法
===不是一个相等运算符!
不. 但是,它是什么? 您可能熟悉===作为Javascript和PHP中的相等运算符,但这不是Ruby中的相等运算符,并且与其他语言具有根本不同的语义. 那么===做什么? ===是模式匹配运算符! > ===匹配正则表达式 那么这种疯狂是如何有意义的呢? > Enumerable#grep在内部使用=== 这就是为什么你可以在if语句的情况下使用正则表达式和类和范围甚至lambda表达式. 一些例子 case value when /regexp/ # value matches this regexp when 4..10 # value is in range when MyClass # value is an instance of class when ->(value) { ... } # lambda expression returns true when a,b,c # value matches one of a,c with `===` when *array # value matches an element in array with `===` when x # values is equal to x unless x is one of the above end 所有这些示例也使用pattern === value,以及grep方法. 我只能猜测为什么没有!==方法,但是Tadman的直觉似乎很明显,===主要通过case和grep间接使用,因此可能似乎不需要显式的逆运算符.大多数生产代码的样式指南都禁止使用===运算符. 如果您正在寻找其他相等运算符,请检查.eql?和.equal? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |