ユーザー定義の識別子がかぶった場合の対処

今の言語仕様やライブラリはココが足りないんじゃ…、エディタや周辺ツールにこんな機能が必要なのでは…!?このような要望、具体的な提案などがありましたら、こちらのフォーラムをご活用ください。
返信する

あると便利か。

1 個までオプションを選択できます

1
50%
1
50%
0
0 票
0
0 票
 
投票総数: 2
 

メッセージ
作成者
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

ユーザー定義の識別子がかぶった場合の対処

#1 投稿記事 by konisi »

例えば、次のようなコードはエラーになります。

コード: 全て選択

const k=1
Sub f()
    Dim k As Long
End Sub
これは定数kと同じ名前のローカル変数が宣言されようとしているのでエラーになるのですが
変数kが宣言されている関数内で、const.kと書かれたときは定数kを参照、特に指示が無い場合はローカル変数を参照。
という方式にすればエラーにならず、且つ両方使用できるので便利だと思います。

同様に、次のようなコード

コード: 全て選択

Dim k As Long
Sub f()
    Dim k As Double
End Sub
のf関数内でグローバル変数kを使いたい場合に、global.kと表記する事で参照できるように出来ればと思います。

同様に、次のようなコードが書ければ便利だと考えます。

コード: 全て選択

const k=1
Dim k As Long
Class F
Private
    k As Single
Protect
    k As Word
Public
    k As Byte

    Sub F()
    End Sub

    Sub a()
        Dim k As Double,n As Double
        n=const.k'定数
        n=global.k'グローバル変数
        n=this.private.k'内部変数
        n=this.protect.k'半保護変数
        n=this.public.k'公開変数
        n=this.k'内部変数(標準動作)
'内部変数が無い場合は半保護変数、それも無い場合は公開変数を参照する。
        n=k'ローカル変数(標準動作)
'ローカル変数が無い場合は内部変数、以下thisの優先度に等しい。
'thisの優先度で判定を行った後公開変数を参照できない場合は、グローバル変数を参照する。グローバル変数が無ければ定数を参照する。
    End Sub
End Class
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信する