我正在使用Ruby 1.9.3
。我與一些模式玩,發現一些有趣的事情:模式匹配時=〜和match()有什麼區別?
例1:
irb(main):001:0> /hay/ =~ 'haystack'
=> 0
irb(main):003:0> /st/ =~ 'haystack'
=> 3
例2:
irb(main):002:0> /hay/.match('haystack')
=> #<MatchData "hay">
irb(main):004:0> /st/.match('haystack')
=> #<MatchData "st">
=~
返回它的第一場比賽的第一個位置,而match
返回模式。除此之外,=~
和match()
之間是否有區別?
執行時間差(按@Casper)
irb(main):005:0> quickbm(10000000) { "foobar" =~ /foo/ }
Rehearsal ------------------------------------
8.530000 0.000000 8.530000 ( 8.528367)
--------------------------- total: 8.530000sec
user system total real
8.450000 0.000000 8.450000 ( 8.451939)
=> nil
irb(main):006:0> quickbm(10000000) { "foobar".match(/foo/) }
Rehearsal ------------------------------------
15.360000 0.000000 15.360000 (15.363360)
-------------------------- total: 15.360000sec
user system total real
15.240000 0.010000 15.250000 (15.250471)
=> nil
爲什麼下投票:
match
當您想了解什麼是匹配的細節,通常使用我得到了? – DoLoveSky'operator'和'method'都可能做同樣的事情,但是它們的功能差別太大了 - 這兩個帖子都帶有太多的信息,這對於所有SO用戶來說都是非常棒的,有用的知識信息。儘管所有這些我得到了投票意味着對我來說真的很糟糕!我沒有想到這是來自論壇。 – DoLoveSky
我並沒有讓你失望,但我想這是因爲寫作的問題是中等荒謬的。你發現有多個方法可以做類似的事情,但是每個方法都會返回不同的結果。爲什麼這很有趣? Ruby(和大多數編程語言)中有很多方法可以做類似的事情,但返回不同的結果。 – Phrogz