麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Ruby > 正文

詳解Ruby里4種函數的比較

2020-02-24 15:37:10
字體:
來源:轉載
供稿:網友

Ruby中的四個函數的比較,大家感興趣嗎?其實它們在不同的類中的行為非常不同,使用時也特別容易混淆,本文將為大家講解詳解Ruby里4種函數的比較,希望對你學習這方面知識有幫助!

== - 類意義上的 相等,需要每個類自己定義實現

在特定類中覺得兩個對象是否相同,需要看業務上的邏輯表象,所有由程序員覆蓋該方法的定義,決定兩個對象是否相同。

比如 String 類,他是來計較實際的文字串是否相同,而不在意是否來自同一個內存區域。

ruby;">>> a = "abc"#=> "abc">> b = a + ""#=> "abc"?> a == b#=> true>> a.object_id#=> 70255156346640>> b.object_id#=> 70255156340640

=== - 用在 case 語句里時會調用的方法

通常用在 case 比較調用該方法,比如

case some_objectwhen /a regex/ # The regex matcheswhen String # some_object is kind of Stringwhen 2..4 # some_object is in the range 2..4when lambda {|x| some_crazy_custom_predicate } # the lambda returned trueend

等同于

if /a regex/ === some_object # The regex matcheselsif String === some_object # some_object is kind of objectelsif (2..4) === some_object # some_object is in the range 2..4elsif lambda {|x| some_crazy_custom_predicate } === some_object # the lambda returned trueend

eql? - 通常意義上的 相等

如果兩個對象的值相同將返回 true,如果重新定義了子類的 == 方法,一般需要 alias 到 eql? 方法。 當然也有例外,整數與小數的比較兩個方法的返回值就不同。

1 == 1.0  #=> true1.eql? 1.0 #=> false

eql? 用在 Hash 里面用來做成員值比較

[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"

所以什么時候應該覆蓋這個方法就看你想讓他在 Hash 比較時如何表現。

equal? - 內存地址相同的對象

該方法不應該被子類覆蓋
比較的是兩個對象在內存中是否相同,是否有同一個object_id值
Rails中及時相同的對象

q = User.first User Load (40.4ms) SELECT "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1#=> #<User id: 1, email: "[email protected]">q2 = User.first User Load (0.4ms) SELECT "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1#=> #<User id: 1, email: "[email protected]">q.equal? q2#=> false

記憶方法

  1. == 按業務需求覆蓋該方法
  2. === 覆蓋 case 語句時的表現
  3. eql? 別名到 == 方法, 需要時覆蓋方法改變 Hash 比較時的表現
  4. equal? 不改動

本文是武林技術頻道小編為大家介紹的詳解Ruby里4種函數的比較,大家了解的怎樣了呢?我們可以嘗試著按照上文的代碼操作一遍,這樣能讓我們加深印象,從而鞏固好這方面的知識。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 国产一级淫 | 久久爽精品区穿丝袜 | 九九黄色影院 | av在线影片 | 国产激爽大片在线播放 | 黄视频免费在线 | 国产精品免费观看视频 | 日韩午夜片 | 羞羞视频免费网站 | 国产91一区| 亚洲日本欧美 | 特级黄色一级毛片 | 免费一级毛片网站 | 人禽l交免费视频观看 视频 | 国产亚洲精品成人a | 欧美日韩一区,二区,三区,久久精品 | 72pao成人国产永久免费视频 | 成人福利视频在线 | 一区二区三高清 | 国产精品久久久久网站 | 欧美 国产 综合 | 色就色 综合偷拍区91网 | 九九热九九热 | 欧美成人一级片 | av成人免费在线观看 | 亚洲午夜天堂吃瓜在线 | 日韩午夜一区二区三区 | 欧美成人免费 | 欧美高清另类自拍视频在线看 | 俄罗斯16一20sex牲色另类 | 毛片免费视频在线观看 | 91小视频在线观看免费版高清 | 亚洲成人免费电影 | 久草在线资源福利站 | 免费久久久 | 日本aaaa片毛片免费观看视频 | 欧美性受xxxx人人本视频 | 日韩黄色片在线观看 | 黄色毛片视频在线观看 | 欧美性生活久久久 | 免费久久久久久久 |