From: Yasuhiro Fukuma Date: 2000-10-19T17:58:46+09:00 Subject: [ruby-list:25521] Re: setter: two or more args ----Security_Multipart(Thu_Oct_19_17:58:32_2000_601)-- Content-Type: Text/Plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 福間@福岡 です。 記事 <20001019024436Z.yashi@yashi.com> にて、 Yasushi Shoji さんは書きました: > この問題って、(compile timeに?) Rubyが `='で終ってる method呼出しと代入 > を区別できる様にならないと、もしかして解決しないんでしょうか? まず、Rubyの文法上 obj.method = 10 の `=' はあくまで 左辺 = 右辺 の `=' であって、メソッド名 method= の `=' ではありません。 # obj.method = 10 が obj.SET_method(10) と解釈されてもいいんだけど、 # いまのRubyではたまたまそうなっていないだけ。 obj.method, obj[123], var = 10, 20, 30 なんてこともできるので、区別できるできないというより(文法上は)同列に 扱わないと面倒なんじゃないでしょうか。 > # compile timeには、method callと代入の区別が付いてなくて、run timeには > # 付いているのかな? > # どこらへんを読めば良いんでしょう? parse.y の arg : lhs '=' arg expr : mlhs '=' mrhs あたりから追っかけていくと、比較的わかりやすいと思います。 --- FUKUMA Yasuhiro (福間 康弘) as Yasu.F @ Kitakyushu.Fukuoka.Japan Web site: http://www.bsdclub.org/~yasuf/ PGP fingerprint = 17 25 8A F3 99 E5 7E 19 C0 EA 6E 03 8A C3 CE F0 “いちばん苦手な言語は、日本語です。” ----Security_Multipart(Thu_Oct_19_17:58:32_2000_601)-- Content-Type: Application/Pgp-Signature Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- Version: PGPfreeware 5.0i for non-commercial use MessageID: BlzMzZMf/i722YEmFDoJdltE8iZIPL4R iQCVAwUAOe63wQqHABIYLe0FAQGDrQQArayNqOdmwIr576E/Yb0cMu0cyWlZ6AFD UzKfRon0hGNRBycbPBhalWfGPE/3UuNWhxTFou2anWrkWbT6qo9WQUBCXhdyeo1h yiAivSkmzxW5aXCQ1qp+kgbk6lU+a/6WIh0p8QOODd1khAfFZ+OOTl54C9SO/1TS C1DKKvfvAMw= =kkZ3 -----END PGP SIGNATURE----- ----Security_Multipart(Thu_Oct_19_17:58:32_2000_601)----