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

なでしこv1のバグや要望を書き込む掲示板

@460■ (#1453) [バグ]一部関数が動かない/[要望]ネームスペースを"実用的"な物に - area (2010-01-23 21:46) /低 未処理
【症状】
現在なでしこでは誤動作防止の為に"ネームスペース"が実装されていますが
これをコーディングスタイルとして利用出来るようにして欲しいです。

【再現方法】
なでしこには"取り込む"という命令があります。
この命令を使えば、外部ファイルのなでしこスクリプトをロードする事が可能です。
この場合、取り込むを使ってロードされたスクリプト内に
取り込んだ側のスクリプトと同じ名前の変数、関数、定数が存在した場合は
別名前空間の物として区別することが出来ます。
関数や変数を参照する時は、[ファイル名]:[変数/関数/定数]とすることで
名前空間を指定して取得、実行出来ます。

ただ、ここで問題があります。
取り込む命令を利用した側の名前空間も"ファイル名"で決められてしまうのです。

何が問題かというと、この場合取り込まれた側のソースからは
取り込んだ側の名前空間にある情報を確実に利用出来ないのです。

なでしこスクリプトは任意のファイル名で保存出来ます。
今回は"MyApplication.nako"として自作のプログラムを作成し、
"MyApplication.nako"は"Library.nako"を内部で取り込んでいると仮定します。

これ("MyApplication.nako")を実行ファイルに(PACKFILE)した時に、強制的に
"nadesiko.nako"として梱包されてしまいます。

今まで取り込んだ側は 名前空間"MyApplication"を指定して取り込み元の
情報を利用していたため、情報を取得できなくなってしまいます。

先ほど書いたように、なでしこは全ての名前空間をファイル名で扱っています。
そのため実行ファイル化し、ファイル名が"nadesiko.nako"になってしまうと
今までのファイル名("MyApplication")で名前空間を決めうちしていた
ソースは動かなくなってしまいます。

それを避けるために作られたと思われる"ネームスペース変更"命令は
現在動作していません。

現在でも任意のファイル名ではなく"nadesiko.nako"として作成すれば
この問題は回避できますが、これはいかんせん綺麗な対処法ではないと思うのです。

【要望】
名前空間系処理の改善。
とりあえず、私が思いついた改善案を書いておきます。

1.取り込む側の名前空間を強制的に"ユーザー"にする。
これが一番スマートな解決策だと思います。

2.PACKFILE時に"nadesiko.nako"にリネームせずそのまま梱包する。
ファイル名とかで問題が起きそうなので良くないとは思われますが
変更の作業量が少ないとは思います
[バグ]一部関数が動かない/[要望]ネーム.. / area (2010-01-23 21:46) (#1453)/ 低 未処理
  『ネームスペース変更』命令の問題点&修.. / U D (2010-01-24 03:31) (#1454)/ 低 修正中
  進展。 / U D (2010-02-21 20:03) (#1484)/ 低 修正中
  お疲れ様です / クジラ飛行机 (2010-02-21 22:36) (#1485)/ 高 修正中
  修正しました / U D (2010-02-22 14:34) (#1489)/ 高 修正中
  取り込まれる側での"ネームスペース変更".. / area (2010-03-30 16:50) (#1555)/ 高 再修正依頼
  これならどうでしょう? / U D (2010-03-30 21:00) (#1556)/ 高 再修正依頼

(#1453)へ返信する:

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

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

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