Ruby里面有4种比较方法,equal"htmlcode">
a = "abc" #=> "abc" b = a + "" #=> "abc" ?> a == b #=> true a.object_id #=> 70255156346640 b.object_id #=> 70255156340640
=== - 用在 case 语句里时会调用的方法
通常用在 case 比较调用该方法,比如
case some_object when /a regex/ # The regex matches when String # some_object is kind of String when 2..4 # some_object is in the range 2..4 when lambda {|x| some_crazy_custom_predicate } # the lambda returned true end
等同于
if /a regex/ === some_object # The regex matches elsif String === some_object # some_object is kind of object elsif (2..4) === some_object # some_object is in the range 2..4 elsif lambda {|x| some_crazy_custom_predicate } === some_object # the lambda returned true end
eql"htmlcode">
所以什么时候应该覆盖这个方法就看你想让他在 Hash 比较时如何表现。 equal"htmlcode">
记忆方法
1 == 1.0 #=> true
1.eql"htmlcode">
[1] pry(main)> hash = Hash.new
#=> {}
[2] pry(main)> hash[2] = "a"
#=> "a"
[3] pry(main)> hash[2.0] = "b"
#=> "b"
[4] pry(main)> hash[2]
#=> "a"
[5] pry(main)> hash[2.0]
#=> "b"
[6] pry(main)> hash[2.00] = "c"
#=> "c"
[7] pry(main)> hash[2.0]
#=> "c"
q = User.first
User Load (40.4ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
#=> #<User id: 1, email: "ryan@wongyouth.com">
q2 = User.first
User Load (0.4ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
#=> #<User id: 1, email: "ryan@wongyouth.com">
q.equal? q2
#=> false
Ruby,比较函数
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
稳了!魔兽国服回归的3条重磅消息!官宣时间再确认!
昨天有一位朋友在大神群里分享,自己亚服账号被封号之后居然弹出了国服的封号信息对话框。
这里面让他访问的是一个国服的战网网址,com.cn和后面的zh都非常明白地表明这就是国服战网。
而他在复制这个网址并且进行登录之后,确实是网易的网址,也就是我们熟悉的停服之后国服发布的暴雪游戏产品运营到期开放退款的说明。这是一件比较奇怪的事情,因为以前都没有出现这样的情况,现在突然提示跳转到国服战网的网址,是不是说明了简体中文客户端已经开始进行更新了呢?