関数の処理後に使用したい変数を作成する関数を使用しています。 私はそれらに直接アクセスしようとしましたが、できません。これをどうやってやりますか?関数が実行された後に関数内で作成された変数にアクセスする
答えて
関数内の変数は、関数の実行後も存続しません。関数が処理された後でそれらにアクセスする場合は、スコープ修飾子を接頭辞として使用します。詳細については、お使いのコンソールで
PS> function test-var{ $script:var='foo' }
PS> test-var # excute the function
PS> $var #print var
foo
タイプこれは:シェイが指摘したように
PS> Get-Help about_Scopes
ありがとうございます! – Sune
あなたはより高いレベルのスコープで利用できるようになり、関数のスコープ内のグローバル変数と呼ばれるものを作成することができます。しかし、グローバル変数は一般的には良い考えではないので、いくつかの選択肢を提案したいと思います。
これは、ウィキペディアglobal variableページからさ:
彼らは通常ため、その 非局所性、正確悪い習慣と考えられている:彼らは保護されたメモリに常駐しない限り、グローバル変数は、潜在的に どこでも(から変更することができますそうでない場合は が読み込み専用にレンダリングされます)、プログラムのどの部分もそれに依存する可能性があります。[1] したがって、グローバル変数は相互依存関係を作成するための無限の可能性を持ち、相互依存関係を追加すると複雑さが増します 複雑さ。
いくつかの選択肢:
関数は、呼び出し側が必要とするデータを返しください。 Powershell関数は一般に、Powershell関数の名詞に関連するデータを返します。naming convention Verb-Noun。名詞に関連付けられていない他のデータを返す必要がある場合は、2番目の機能を作成することを検討してください。
function Get-Directories { param ([string] $Path) # Code to get or create objects here. $dirs = Get-ChildItem -Path $Path | where {$_.PsIsContainer} # Explicitly return data to the caller. return $dirs } $myDirs = Get-Directories -Path 'C:\'
reference variableを使用してください。参照はメモリ内の変数のアドレスを関数に渡します。関数が変数のデータを変更すると、関数の外部でアクセスできるようになりますが、変数のスコープは変更されません。
function Get-Directories { param ([string] $Path, [ref] $Directories) $Directories.Value = Get-ChildItem -Path $Path | where {$_.PsIsContainer} } $myDirs = $null Get-Directories -Path 'C:\' -Directories ([ref] $myDirs)
この情報がお役に立てば幸いです。ハッピーコーディング:-)
あなたのthouroughの答えをありがとう! – Sune
で関数を実行する場合。あなたのスコープ内で関数が実行され、関数内で定義されたすべての変数が呼び出し側に利用可能になります。
すなわち
. $func
$myPrivateVariable # Now Set in the parent scope.
機能がモジュール内にある場合、あなたはまた、モジュールのスコープにアクセスするにはトリックのこの種を使用することができますが:
$m =Get-Module myModule
. $m { $myPrivateModuleVariable }
希望これは、あなたがソースコードを共有することができ
ありがとうございました!しかし、なぜあなたはそれの前にドル記号であなたの機能を実行するのですか?変数のように? – Sune
これはサンプルです:-)しかし、この方法でもコマンドを扱うことができます。私。 $ a = Get-Command Get-Command; &$ a、またはScriptBlock:$ a = {$ b = 1}; 。 $ a; $ b –
- 1. ネストされた関数内でグローバル変数にアクセスする
- 2. インポートされたクラスの関数内の変数にアクセスする
- 3. インポートされたモジュール内の関数からグローバル変数にアクセス
- 4. DOM内に要素が表示された後で関数を実行する
- 5. グローバルスコープの関数内で定義された関数へのアクセス?
- 6. 匿名関数内で宣言された関数へのアクセス?
- 7. が作成され、挿入されたDOM要素に関数を実行
- 8. ファーストファンクションが最初に実行された後に呼び出される関数
- 9. 関数の実行後に関数内の変数が破棄されますか?
- 10. 関数外の関数内で作成されたpandas DataFrameを使用する
- 11. componentDidMountで作成されたアクセス変数
- 12. 他の関数から関数内で作成されたオブジェクトにアクセスする方法
- 13. 別の関数のある関数で定義され、宣言された変数にアクセスする方法は?
- 14. 複数の補完ブロックが完了した後に実行される関数
- 15. 別の関数が実行された後に1つの関数を実行する
- 16. 別のラムダ関数が実行された後に1つのラムダ関数を実行する方法
- 17. ベクトル化されたpiecwise関数を作成する関数R
- 18. QTオーバーロードされたクラス関数でQtConcurrentが実行される
- 19. 関数内で宣言された静的変数にアクセスしています
- 20. 複数のajaxリクエストが実行された後に関数を呼び出す
- 21. ページが完全にAngularJSでロードされた後に関数を実行する
- 22. デフォルトのjQuery関数が実行された後にJavascript関数を実行します。
- 23. 入れ子にされたコールバック関数内で変数を変更する
- 24. Pythonクロージャ:関数内で定義された関数は、1レベル上の変数にアクセスできますか?
- 25. 呼び出された関数が実行される前にコードを実行
- 26. tkinter - フレームが表示された後の関数の実行
- 27. 生成された関数
- 28. ネストされた関数内で変数を共有する
- 29. クラス内の関数内で宣言された変数へのアクセス(PHP)
- 30. JavaScriptのコードは関数外で実行されますが、関数内では実行されません
を支援しますか? – rene