rurema / doctree

Repository of Japanese Ruby reference manual
https://docs.ruby-lang.org/ja/
242 stars 312 forks source link

`StringScanner#match` について #2865

Closed naitoh closed 2 months ago

naitoh commented 6 months ago

https://docs.ruby-lang.org/ja/latest/method/StringScanner/i/=3c=3c.html

require 'strscan'

s = StringScanner.new('test') # => #<StringScanner 0/4 @ "test">
s.match(/\w(\w*)/)            # => "test"
s[0]                          # => "test"
s[1]                          # => "est"
s << ' string'                # => #<StringScanner 4/11 "test" @ " stri...">
s[0]                          # => "test"
s[1]                          # => "est"
s.match(/\s+/)                # => " "
s.match(/\w+/)                # => "string"

StringScanner#<< の説明のページに上記の StringScanner#match の説明があるのですが、サンプル通りに実施しても動作しないです。 そもそも https://docs.ruby-lang.org/ja/latest/class/StringScanner.htmlStringScanner#match の記載が無いので、StringScanner#match は存在しないメソッドな気がします。

$ rbenv local 3.3.0
$ irb
> require 'strscan'
=> true
irb(main):002> s = StringScanner.new('test')
=> #<StringScanner 0/4 @ "test">
irb(main):003> s.match(/\w(\w*)/) 
(irb):3:in `<main>': undefined method `match' for an instance of StringScanner (NoMethodError)
Did you mean?  match?
               matched
    from <internal:kernel>:187:in `loop'
    from /Users/naitoh/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.0/exe/irb:9:in `<top (required)>'
    from /Users/naitoh/.rbenv/versions/3.3.0/bin/irb:25:in `load'
    from /Users/naitoh/.rbenv/versions/3.3.0/bin/irb:25:in `<main>'
scivola commented 6 months ago

このサンプルコードの match はすべて scan が正しいと思います。