お風呂で考えること | お日様母さん ― 晴れのち曇りそして雨 ― がんとの闘い

お日様母さん ― 晴れのち曇りそして雨 ― がんとの闘い

私の母親が突然「がん」と診断された。「がん」と闘い、一生懸命に生きた母と後悔ばかりの子の闘病生活を綴る。そして、2018年ついに私自身にも「がん」との診断が…。

何故か今日もお風呂で色々考えてしまった。代表的なのが下記の話。

 

Windows 上で動作する PowerShell で書かれたスクリプトで、$outdata に "foo/bar"  などの値が入っていた場合、$head = "foo", $bottom = "bar" などに「/」で分割するコードがある。(会社で私とは別の人が書いたサンプルプログラム)

$tmp = $outdata -split "/"

$head = $tmp[0]

$bottom = $tmp[1]

というコードがあって、ついつい、

$head, $bottom = $outdata -split "/"

と直してしまったが、これ $outdata が少し特殊な「foo/bar/baz」の場合に $head = "foo", $bottom = "bar baz" (2番目以降がすべて $bottom に入る) になってしまうので、元のコードとロジックが変わってしまうんだよな。

$head, $bottom = ($outdata -split "/")[0,1]

ならどうだ! と念のため AI に聞いてみたら、OK らしい。他にも、

$head, $bottom, $null = $outdata -split "/"

という書き方もある。元のコードに類似なのは、先ほどの [0,1] なんですが、こちらは split したデータの 3 つ目以降は捨てることが明示的にわかってシンプルかな。

 

冒頭で書いたように、これ PowerShell で動作させるコードなんだけど、このあたりの実装のバリエーションって、昔 Perl (パール) という言語でも似たようなコードを書いたことがあり、3 番目以降があった場合の挙動について気が付いたのでした。

 

…なんてことを、風呂に浸かりながら考えるので長風呂になってしまうのですがね…。ショボーン