「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@166) [中] [調査中]
@166■ (#443) 関数の引数で「それ」が参照される - しらたま (2009-01-26 02:01) /中 未処理
【症状】
関数の引数の型に「配列」を指定して、その引数に変数「それ」を与えると、その引数が「それ」を参照するようになる。
おそらくハッシュ、グループでも同様の現象が起こると思われる。
【再現方法】サンプルソース、再現手順など
●A({配列}B)
 それは「こんばんは」
 Bと表示

それは「こんにちは」
A(それ)
【要望】
「それ」を渡されたときは実体までコピーする。
【バージョン】1.513

(#444) RE:関数の引数で「それ」が参照される - LSI (2009-01-26 22:22) /中 未処理
To: しらたまさん

> 【症状】
> 関数の引数の型に「配列」を指定して、その引数に変数「それ」を与えると、その引数が「それ」を参照するようになる。
> おそらくハッシュ、グループでも同様の現象が起こると思われる。

参照渡しであれば、どの型でも起こりますね。


> 【要望】
> 「それ」を渡されたときは実体までコピーする。

『「それ」の時は、例外的に値渡しにする』ということでしょうか。
もしそうだとすると、『「配列削除」や「文字削除」などで、「それ」を渡しても
要素が削除されない』という現象が起こりそうなのですが、問題はないのでしょうか。

#ここから
それは「nadesiko」。
それの3から4文字削除。
それを表示。#「nako」と表示してほしい
#ここまで

(#446) RE:関数の引数で「それ」が参照される - しらたま (2009-01-27 22:21) /中 調査中
確かにその通りですね。
とすると、解決法としては「変数(それ)への参照を増やすのではなく、データ実体への参照を増やす」とするのが良いでしょうか。
これならば、「それ」を指定された引数のデータ実体は正しく受け渡しでき、内部で「それ」に違う値を代入しても、「それ」を指定された引数には影響されなく出来ると思います。

(#443)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能