メソッドとレシーバの組み合わせのオブジェクト。Method.new
ではなく Object#method
で作成する。
Methd#call
メソッドで呼び出しできる。ruby-1.1b9_01
と初期からある。
$ docker run -it --rm rubylang/all-ruby ./all-ruby -e 'p Method'
...
ruby-1.1b9 -e:1: Uninitialized constant Method (NameError)
これは Ruby Advent Calendar 2024 の記事です。
日々 Ruby を使う中で、ちょっとだけ新しい文法が欲しくなったり、逆に今の文法に気に入らないところがあったりといった経験はないでしょうか。 気に入らない文法は使わなければいいだけですし、複数人でそれを統一したいなら Rubocop があります。ですが、存在しない文法を使うことはできません。 そんなとき AltRb という選択肢はどうでしょうか、という提案をこの文ではお届けします。
のでやってみます。まずビルドだけできる状態にしてみます。
これで実行すると当たり前ですがエラーになります。
ので docker + qemu で試してみます。
ファイルを作った後 WSL で以下のようにして環境を作りました。
てきとうに読み始めててきとうに書き始めていてまだ終わっていません。 何か変なことを書いていたらすみません。
https://github.com/socketry/falcon がどう動いているのか気になったので見てみます。
# original file: https://git.ruby-lang.org/ruby.git/tree/parse.y | |
%prefix "tiny_ruby_parser" | |
%capture on | |
%value c -> "tiny_ruby_value" rb -> "TinyRubyValue" | |
%auxil c -> "tiny_ruby_context_ext *" | |
dump <- program:program | |
c -> { |
# This code is hereby placed in the public domain. | |
# | |
# THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS | |
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | |
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | |
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE | |
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | |
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | |
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR | |
# BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
classDiagram
Parser --> LrMemoTable: memos
Parser --> Thunk: thunks[]
LrMemoTable --> LrMemo: memos[pos][rule_name]
LrMemo --> ThunkChunk: answer
Thunk <|-- ThunkNode
Thunk <|-- ThunkLeaf