PowerShellで独特だと思った仕様

PowerShellを使っていてハマった仕様についてのメモです。

関数は最初に書かなければならない

このコードは正しくありません。

以下のエラーが発生します。

f : 用語 ‘f’ は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。

正しくはこう書きます。関数定義の後ろで呼び出すだけです。

ちゃんとメッセージが出力されます。

でももしPowerShell ISEで編集している場合、この後に元のコードに戻すと動きます。関数が定義されたことを覚えているみたいです。便利な場合もあるかもしれませんが、ISEでテストして実際に動かそうとなった時にエラーになる罠。

関数の呼び出しにカッコは不要

このコード、普通は”x”が表示されると思いますよね?

でも実行結果はこうなります。$aに両方の引数が格納されてしまいます。PowerShellでこの書き方だと配列を表すらしいです。

正しくはこう書きます。呼び出し側でカッコやカンマ区切りは不要です。

ちゃんと”x”のみが出力されます。

引数が1個だけの時は問題無いけど2個以上だとおかしくなる罠。

デストラクタが無い

そのまんま。コンストラクタはあるけどデストラクタはない。いやいやあるだろうと散々探したけど無かった。

コメントを残す

メールアドレスが公開されることはありません。