[#30220] schedule for Ruby 1.8.6 — "Akinori MUSHA" <knu@...>

 ruby-core を読んでいない人もいると思うので、ここでもアナウンス

20 messages 2007/01/30

[ruby-dev:30161] Re: := operator

From: Yukihiro Matsumoto <matz@...>
Date: 2007-01-23 03:35:21 UTC
List: ruby-dev #30161
まつもと ゆきひろです

In message "Re: [ruby-dev:30159] := operator"
    on Tue, 23 Jan 2007 12:27:24 +0900, SASADA Koichi <[email protected]> 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はおかしいよね。

                                まつもと ゆきひろ /:|)

In This Thread