>「参照渡し (call/passing by reference)」と「値渡し
>(call/passing by value)」が標準的な術語だと思うの
>で、言葉としては、これを使うのがいいような気がする
>んですが。言語も C++ ですし。
同意します。私自身、「ポインタ完全制覇」でも「Java謎+落とし穴~」でも、
「値渡し」という言葉を使用しています(どこかで「実体渡し」という言葉を
使っているかもしれませんが…)。
ただ、「PlayerがBoardの実体を保持していてはいかんでしょう。」といった
話をするときには、「実体」またはそれに類する言葉が要るのではないかと
思っています。
おっしゃるとおり、術語としてちゃんと定義されてなさそうなので、誤解を
招く可能性があると思うのですが。そのために、先の投稿で注釈をつけたわけです。
>ただ、Java を含む多くの GC つき言語では、参照の値
>渡しをするわけで、この術語は使えませんね。
ええと、少なくともJavaやCなら「値渡ししかない」で済みそうな気がするのですけど。
>Python プログラマで一人、"call by object reference"
>のことを指して "call by object" と呼んでいる例が見
>つかりましたが、これだと、日本語と英語で意味が逆に
>なりますし。
日本人でも、「オブジェクト==参照」という解釈の人もいるようですから、
「日本語と英語で意味が逆」になるわけでもないような気がします。
http://www.rubyist.net/~matz/?date=20030730
| もっとも多くの言語には「オブジェクト」でない「値」もある。
| またCの例を出すと、構造体はオブジェクトではない。代入によって
| コピーが発生するからだ。 BASICの文字列もオブジェクトではない。
最初読んだとき、かなり違和感がありました。「参照」と「値」の話なら
その通りですが、上記の文を読む限り、「オブジェクト」が「参照」と
ほぼ同義で使われているからです。
>
http://aspn.activestate.com/ASPN/Mail/Message/python-Tutor/509290
ざっと読みました。
| (2) there is no pointer type in Python, so you *can't* pass "a
| reference" to an object
Pythonは(Javaと同様)なんでもかんでも参照だと思っていましたが、
これはどういう意味でしょう。変数への参照が取れないってことかなあ。
# でも「you *can't* pass "a reference" to an 『object』」だしなあ。
## 私がPythonについて誤解しているようでしたらご指摘くださいませ。