From: Nobuyoshi Miyokawa Date: 1998-01-08T10:43:43+09:00 Subject: [ruby-list:5822] Is ruby not able to treat 'nil' as 1st arugument for method call ? はじめまして。 最近、ruby の便利さに感動している三代川と申します。 ruby では、メソッドの第一引数へ nil を渡す事は、文法上禁じ られているのでしょうか? 以下のソースを試してみますと、 ---- ここから ---- ここから ---- ここから #!/usr/local/bin/ruby class Foo def []=(key, val) p key end def bracket=(key, val) end end #Foo.bracket=(nil, 'foo') #Foo.new[nil]='foo' #Foo.new[]='foo' ---- ここまで ---- ここまで ---- ここまで 1) Foo.bracket=(nil, 'foo') 行を有効にすると、parse エラーに なる。 2) Foo.new[nil]='foo' 行を有効にすると、[]= メソッドの第一引 数へ nil が渡る。 3) Foo.new[]='foo' 行を有効にすると ruby が core dump する (^^; ユーザーズガイドの syntax.html や yacc.html へあたってみた のですが、明確な記述を見付けられませんでした。parse.y にも当 たってみたのですが、yacc はあまり得意でないので、やはり分か りませんでした...。 もしご存知の方がいらっしゃいましたら、どなたかこの件に対し て解説して頂けるとありがたいです。なお、使用しているruby の バージョンは、 ruby 1.1b3(97/12/25) [i386-freebsd2.2.2] です。 ---- ちなみに、本当にしたかった事は、 Hash[] の key が指定されなかった場合には、val 内の一定メ ソッドを用いて key を自動計算する という事なのでした。 -- Nobuyoshi Miyokawa / nmiyo@hic.co.jp