どうも!リョクちゃです。
今回は、PowerShellのスクリプト内で複数の関数を作成して活用する場合に、
効率的?コードをスッキリとできる方法を紹介していきます。
何かとプログラムを書いていると、コードをもう少し短くできないか?
といったことを考える時がくるのではないでしょうか?
そんな時にこんな方法もあったなと頭の片隅にでも残していただけたらなと思います。
ちなみに前回はこちら
目次
1行で関数を2度呼ぶ
関数のおさらい
PowerShellにおける関数は以下のような記述で作成することができました。
1 2 3 |
function 関数名(引数1,引数2) { 処理 } |
関数については、以下の記事でも紹介していました。
関数は、同じ処理が1つのスクリプトで何回も続くときに作ったり、
処理を細かくわけて、わかりやすくしたいときに作ります。(一般的には)
例えば、
スクリプト内で値の足し算を行いたい場合、
1 2 3 |
function Add-Value($val1, $val2) { return $val1 + $val2 } |
こんな関数を作っておくことで、後は同様の処理が来た時に、
この関数を呼べば同じ処理を何回も書かなくて済みますね。(例が悪かったかもです。)
下の関数の方がわかりやすいかもです。
1 2 3 4 5 6 7 |
feunction Find-Even($val1) { if ( $val1 % 2 -eq 0) { return 1 } else { return 0 } } |
これだったら関数として作る意味はありそうですね。
何回も条件分岐を書いていくよりは、1つ関数として作っておいた方が便利ですね。
コードも短くなりますね。
このようにして関数を駆使して、スクリプトを作っていく方が、複雑な処理になる場合は
おススメです。
処理を分けて関数を作っていくと、いろんな関数ができてきて、
ときに変数に、値を”ある値から加工した状態”で
変数に格納したいといった場合が出てくるかと思います。
このような場合、一方の処理は関数A、関数Aでの戻り値を使って
別の処理を関数Bに行わせて、最終的な戻り値を変数Cに格納するとします。
この時、段階的に処理を記述していくと、以下のようになるかと思います。
1 2 3 |
$変数A = 関数A $変数B = 関数B $変数C = 関数C |
ただ、こういった書き方をしていると読み手にはわかりやすいですが、
どうしてもコードが長くなってしまいますね。
そんな時、1行に関数を呼び出す処理を凝縮してしまいたくなります。
以下の方法で実は短くできてしまいます。
1 |
$変数C = 関数B( 関数A 引数1 引数2 ) |
このように書くことで、関数Aを先に呼び出し、その結果を関数Bの引数に当てています。
コードを短くはできますが、若干わかりづらくなるかもしれませんね。
まとめ
コードを短くスッキリさせる方法として、
1行で関数を2度呼び出す方法を紹介していきました。
時に便利な書き方になるので、覚えてもらえたらなと思います。
1つの処理内で全てを書くのではなく、処理を細かくわけて関数を作っていくことで、
バグが起きた際に修正範囲を減らせるといったメリットもあります。
最後までお読みいただき、ありがとうございます。