スコープについて

31 views
Skip to first unread message

shige pon

unread,
Sep 30, 2014, 1:42:33 AM9/30/14
to nadesi...@googlegroups.com
ご無沙汰しています。皆様お元気でしょうか?しげぽんです。

こちらあまりガンガン進めていませんが、少しずつなでしこ2のコードを修正したりしています。
イベント関連のコードはまだチェックできていません><。早く読みたいところです。

ところで、今更感がとても強いのですが、スコープについて気になる点があったので、質問します。
現状のなでしこ2では基本全てグローバル変数で、ユーザー関数の引数に使った変数のみ、
ユーザー関数内でローカル扱いされるという状況になっています。これはなでしこ1でもそうです(確か)。

これだと意図しないグローバル変数の変更が起こったりして、長めのプログラムを書く時にとても苦労するので、
ユーザー関数内の変数は基本ローカルにして、例えば
「hogeはグローバル」みたいな命令を使ってグローバル指定したい変数を指定するとかするのが良いのかなと思います。

また、逆に
「hogeはローカル」とやって、ローカル指定したい変数を指定するやり方もあると思います。

どちらが良いか、また、他に良いアイデアなどありましたらご意見よろしくお願いいたします。

shige pon

unread,
Sep 30, 2014, 9:01:58 AM9/30/14
to nadesi...@googlegroups.com
> ユーザー関数の引数に使った変数のみ、ユーザー関数内でローカル扱いされるという状況になっています。
と書いたのですが、ソースを良く見てみると、
「hogeとは整数」と定義すると、hogeをローカル変数として登録するようになっていました。
これはこれで、この書き方がローカル変数であることを明示してないので、どうなんだろうという気はしますが、とりあえず関数内でこういう形で定義しておけばローカル変数に出来るので、意図しないグローバル変数の変更は防げるなと思いました。

Mineaki SAKATOKU

unread,
Sep 30, 2014, 11:07:58 AM9/30/14
to nadesi...@googlegroups.com
クジラ飛行机です。

しげぽんさん、コミット作業、お疲れ様でした。

ローカル変数の定義、ちょっとわかりづらいですね。
ちなみに「hogeとは変数」と書くと型なしでローカル変数を定義できます。
確かに「hogeとはローカル変数」と書いた方が、それっぽいですね。



2014年9月30日 22:01 shige pon <shig...@gmail.com>:

--
このメールは Google グループのグループ「日本語プログラミング言語「なでしこ」開発」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには nadesiko-dev...@googlegroups.com にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout にアクセスしてください。



--
-----------------------------------------
Mineaki SAKATOKU (酒徳峰章 - クジラ飛行机)
mailto: w...@kujirahand.com
website: http://kujirahand.com/

shige pon

unread,
Sep 30, 2014, 7:26:49 PM9/30/14
to nadesi...@googlegroups.com
クジラ飛行机さん:

しげぽんです。返信ありがとうございます。

2014年10月1日水曜日 0時07分58秒 UTC+9 酒徳峰章:
現在コードを見ると、「hogeとは○○」で指定できる○○として

数値
整数
文字列
変数
配列変数

があり、それぞれローカル変数として登録するようですね。
変数はともかく、数値、整数、文字列、配列変数はローカルだけでなく、グローバルでも型指定したい時があるかもしれません(ないかも?)。
そう考えると、例えば

hogeとはローカル数値

とすればローカル変数で数値型として変数登録して

hogeとはグローバル数値

とすればグローバル変数で数値型として変数登録
とすると明示的かなと思います。グローバルで型指定することは無いようならグローバル数値などは要らないかもしれません。 
Reply all
Reply to author
Forward
0 new messages