< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事
N :次の記事
|<:スレッドの先頭
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
原です。
>なかだです。
> > '!' で終わる変数をブロックローカルにするのは?
>
>a!=0が代入なのか比較なのかが分かりづらくないでしょうか。
確かに。ただ実際に a! という変数名を(非公式にたまたま)許して
いた時期があり、それを復活させようという魂胆でした。でも、メソ
ッド名における ! とあまりにかけ離れてはいますね。
> > (5)定義済みローカル変数に対する := は = と同値。
>
>引用が前後しますが、ここでいうローカル変数というのはメソッドス
>コープ、ブロックローカルでない変数のことでしょうか。
ああ、だいたいそういう意味です。今までのローカル変数をローカル
変数と呼んでいました。新しいブロックローカルな変数をブロックロ
ーカル変数と呼んでいました。
> > (3):= がアクセスする定義済みブロックローカル変数は、外で最も近いもの。
>
>個人的には、:=は新しくブロックローカル変数を作らない代入、のほ
>うがいいように思います。
他の言語で := は代入 = は等しい事を表す述語、というのがあります
から、確かにちょっと違和感ありますね。しかし、= は Ruby における
ノーマルな、無徴な代入、:= は有徴な代入程度の意味で、悪くない気
もするのです。
というか、見た目というなら、見た目を別のものにしたらいい。
つまり、本質は「(新しい)ブロックローカル変数には特別な記号を
使い、外の代入にまた特別な記号を使う」という事です。この例では
(!,:=)だったけど例えば、(%,.=)とか、(\,=>)とか、
(:,====)とか、パーサの変更が難しくないものを選べばいい。
#上記のが「難しくない」かどうかは知りません。
試しに(%,.=)にしてみると
%x = 0
foo {
%x = 1
%x .= 10
p %x #=> 1
foo {
foo {
%x .= 3
}
p %x #=> 3
}
p %x #=> 3
}
p %x #=> 10
うむ、かなり拒絶感は減る。
>同じスコープ同じ名前で別のものを指すというのは、あまり嬉しくな
>いような気がします。
確かに %x まで見ただけではそれが何を指すか分からなくて、次が =
なのか := なのかまで見ないといけないのは、ちょっと気持ちわるい
ですね。もっとも Ruby ユーザは .foo があったら次に = があるか
否か見るまで評価を保留する訓練をしているので、すぐ馴れるかも。
... 話が違う?
というか同じ変数名に = と .= 両方したがる状況というのがよっぽ
どの事である、あるいはめったに無い事なので、あまり気にしなく
てもいいのでは。あるいは両方は警告または禁止してもいいと思いま
す。その辺は詰めてないのでして。