無料で使えるシステムトレードフレームワーク「Jiji」 をリリースしました!

・OANDA Trade APIを利用した、オープンソースのシステムトレードフレームワークです。
・自分だけの取引アルゴリズムで、誰でも、いますぐ、かんたんに、自動取引を開始できます。

今日の謎

昨日書いたInjectでMapしようとしたんですが。

PS C:\> Inject 1,2,3 @() { $args[0] += $args[1]*2; $args[0] }
12

配列を渡したはずなのに、なぜかIntに変換されとる!どっかで暗黙の型変換が行なわれているっぽいなー、と思って型を出力するコードを追加。

PS C:\> Inject 1,2,3 @() { echo $args[0].GetType();  $args[0] += $args[1]*2; $args[0] }

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
True     True     Object[]                                 System.Array
True     True     Object[]                                 System.Array
2
4
6


PS C:\> Inject 1,2,3 @() { $args[0] += $args[1]*2; echo $args[0].GetType();  $args[0] }

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array
True     True     Object[]                                 System.Array
True     True     Object[]                                 System.Array
2
4
6

なぜか期待通りの動作に!何が起きているんだ・・・。

追記 (2009-02-19)

↓これと同じノリなんだろうか?うーん、何がうれしいのか理解に苦しむ。

PS C:\> $a = 1,2,3,4,5 | where {$_ -lt 2}
PS C:\> $a.getType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Int32                                    System.ValueType


PS C:\> $a = 1,2,3,4,5 | where {$_ -gt 2}
PS C:\> $a.getType()

IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     True     Object[]                                 System.Array