ruby – 为什么“foo”.class === String返回false?
发布时间:2020-12-17 03:42:19 所属栏目:百科 来源:网络整理
导读:当这不像我预期的那样工作时,我变得很好奇: var = "foo"case var.classwhen String puts "bar"else puts "baz"= "baz" 我理解case语句是使用===,但我不明白===是什么.文件说…… Case Equality – For class Object,effectively the same as calling #==, b
当这不像我预期的那样工作时,我变得很好奇:
var = "foo" case var.class when String puts "bar" else puts "baz" => "baz" 我理解case语句是使用===,但我不明白===是什么.文件说……
http://ruby-doc.org/core-2.2.3/Object.html#method-i-3D-3D-3D 这是否意味着在类(或其中一个模块)中的===会覆盖对象中的===?我糊涂了. 解决方法
对于Class对象(更一般地说,
Module objects)重写===表示“右侧是左侧的实例”.
例如: >> String === "" => true >> Class === String => true 这是不直观的,但这是真的.但是,它确实会使您尝试做的更短: var = "foo" case var when String puts "bar" else puts "baz" end # outputs "bar",since String === "foo" 这就是你的尝试不起作用的原因:Ruby评估String === String,这是假的,因为String类本身不是一个字符串. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |