可能重复:
在Ruby中=== vs. ==
我看到它最近使用了几次但却无法弄清楚它的作用.谁能说明它是如何工作的?
TRUE == "TRUE"是TRUE在R'===在R中有任何等价物吗?更新:
这些都回归了FALSE:
TRUE == "True"
TRUE == "true"
TRUE == "T"
Run Code Online (Sandbox Code Playgroud)
唯一的TRUE价值是TRUE == "TRUE".
如果检查identical()一切正常.
第二次更新:
通过===运营商我的意思是检查的过程值和数据类型一的变量.在这种情况下,我假设==操作符只会比较变量的值,而不是它们的数据类型.
在Ruby中Integer === 5返回true.同样String === "karthik"回报true.
但是,5 === Integer退货false.并且"karthik" === String.
为什么操作员不能交换?
我想从另一个数组创建一个数组数组:
a = [11,1,[23,21],14,[90,1]]
a.map { |e| e.is_a?(Array) ? e : [e] }
# => [[11], [1], [23, 21], [14], [90, 1]]
Run Code Online (Sandbox Code Playgroud)
有一种优雅的方式来做到这一点?
import re
collections ={}
collections [re.compile ('n.*')]='word that starts with n'
Run Code Online (Sandbox Code Playgroud)
我希望集合 ['never'] 返回“以 n 开头的单词”,但上述情况不会发生。
我做错了什么?
我知道Class定义===了测试对象是否是该类的实例.
现在的问题是为什么true只评估Class左手操作数.
例:
'a' === String #false
Run Code Online (Sandbox Code Playgroud)
和
String === 'a' #true
Run Code Online (Sandbox Code Playgroud)
要么
def Foo
end
f = Foo.new
f === Foo #false
Foo === f #true
Run Code Online (Sandbox Code Playgroud)