質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
スコープ

スコープとは、プログラム内で変数名など、参照可能な有効範囲のことを指します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

1回答

2283閲覧

スコープが異なる、同じ変数名の変数は定義できないようにしたい

kamiyui_bidan

総合スコア47

スコープ

スコープとは、プログラム内で変数名など、参照可能な有効範囲のことを指します。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2020/03/24 13:55

編集2020/03/24 13:57

PowerShellでは、変数名が同じでも、スコープが異なると別の変数として挙動する認識です。
1つのPowerShellファイル内で、同じ変数名でスコープが異なる変数は定義できないようにしたいのですが、そのような手段はありますでしょうか?

OS:Windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2020/03/24 15:09 編集

ありません。なぜそれがしたいのか理由がわかれば別の方法で解決できるかもしれません。
kamiyui_bidan

2020/03/24 15:26 編集

ご回答、ありがとうございます。 ユーザー関数内と外の同じ名前の変数が別物として動いている事に気付かず、バグの解消に時間がかかった為です
Zuishin

2020/03/24 16:43 編集

外に同じ名前の変数が別物としてあっても、関数の中で同名の変数を定義しているなら、スコープ指定せず外の変数にはアクセスできないので、バグの原因にはなりようがないはずですが。
Zuishin

2020/03/24 16:46

バグを抑えるために昔からよく言われるのは、関数や変数に説明的な名前をつけることと、変数の寿命を短くすることです。ユーザー関数が大きくなりすぎて見通しが悪くなったら分割することを考えましょう。そうすれば分割したそれぞれの関数でローカル変数が使えるのでどの変数を使っているのか迷いにくくなります。
guest

回答1

0

外の変数って要は広域変数ということですよね?
そもそも論として広域変数の使用を避けたコードを書く(書かせる)ことでこのリスクは解消します。

質問への追記・修正の依頼で、Zuishinさんも仰っていますが、変数の寿命を短くすることは重要です。

どうしても関数間で共通的に参照・設定したい変数があったとしたら、Class化してget/setでアクセスするようにすれば、他関数で同一変数名があっても干渉しません。

投稿2020/03/25 05:08

DreamTheater

総合スコア1095

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問