Ruby:为什么Hash === {}返回true?

我有一个哈希,让我们说:
ahash = {test1: "test1",test2: "test2"}

为什么哈希=== ahash返回true,但是ahash ===哈希没有?这是一些使用===和类名的认ruby行为吗?

解决方法

这就是===方法的工作原理.它是定向的,适用于任何类:
"foo" === String
# => false
String === "foo"
# => true

这是因为它评估为:

"foo".send(:===,String)
String.send(:===,"foo")

这些是两种不同的方法,一种是类,一种用于实例.

如果你只关心课堂信息:

"foo".is_a?(String)
# => true

{ }.is_a?(Hash)
# => true

这种方法使您更清楚您的意图.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...