From: Yukihiro Matsumoto Date: 2007-01-23T12:35:21+09:00 Subject: [ruby-dev:30161] Re: := operator まつもと ゆきひろです In message "Re: [ruby-dev:30159] := operator" on Tue, 23 Jan 2007 12:27:24 +0900, SASADA Koichi writes: | := ってオペレータって言わないのかな。よくわからないんで、もし違ってい |たらより適切な言い方を教えてください。 「=」は代入演算子ですから「:=」もそうでしょうね。ですから、 オペレータで問題ないです。 | [Ruby] local variables new scoping rule | http://www.rubyist.net/~matz/20070112.html#p04 | |を読んだのですが、|foo; bar| 以外に := としてブロックローカルな変数を宣 |言する方法を用意する必要性がよくわかりませんでした。 たぶん、|foo; bar|はなくなるんじゃないかと。特定の場所でしか 許されない宣言は個人的にあまり好きじゃないし、醜い気がするし。 | うーん、そうなんですかねぇ。限定された用途のために、:= という記号が増 |えるほうがめんどくさい(覚えるのが)と思います。 「覚えるのがめんどくさい」はRubyのデザインではあまり重視され ません。 | あと、 | |a = 1 |iter{ | a = 2 | a := 3 | a = 4 |} |p a | | 例えばこの場合って何が返るんでしょう。JavaScript的には1、C++的には2、 |大穴は4。 超大穴、エラー、と言いたいところですが、正解は 2 ですね。しかし、JavaScriptはおかしいよね。 まつもと ゆきひろ /:|)