最近仕事の関係で少しC#を使っている。
そのせいでC#頭になっていたためか、Powershellで以下のようなエラーに悩まされた。(実際にはもう少し大きな関数)
001 002 003 004 005 006 007 | function MonthNext([Datetime]$p1){ $aList.Add($p1) return $p1.AddMonths(1) } $aList = New-Object System.Collections.ArrayList $翌月 = MonthNext (Get-Date) $翌々月 = MonthNext $翌月 |
MonthNext : パラメーター 'p1' の引数変換を処理できません。"System.Object[]" の値を " 発生場所 C:\Users\kumagai_mitsugu\AppData\Local\Temp\f481cf43-ee2 |
7行目の引数「$翌月」が日付型に変換できないというエラーだ。
ん~、AddMonthsしてreturnしているんだから当然日付型のはずっと悩んでしまった。
調べてみると戻り値がこんな感じになっている。
PS>$翌月 2012年12月28日 9:33:52
IsPublic IsSerial Name BaseType |
どうやら「0」と「日付」のオブジェクト配列となっているようである。
「0」って何だ?としばらく悩んだ挙句、ArrayListにAddしたときの戻り値だと気付いた。
判ってしまえば何の事はない。
ArrayListのAddに戻り値があるのは何度も経験しているし、Powershellの場合「return」に特に意味はないことも判っている(あっても無くても結果は同じ)、関数内の複数個所で出力すれば纏めてリターンされることも判っている。
すべてが判っていることなのだが、少しずつの錯覚が重なって結構嵌ってしまった。
こんな時の為に戻り値を一旦クリアできたら便利な気もするのだが・・・。
0 件のコメント:
コメントを投稿