通用的ParamArray參數的不一致處理中的this question這種看似 行爲不一致的上下文中發現可被再現爲既在F#2.0和F#3.0 RC以下:在F#
type Heterogeneous =
static member Echo([<ParamArray>] args: Object[]) = args
type Generic =
static member Echo<'T>([<ParamArray>] args: 'T[]) = args
用法: 返回:
Heterogeneous.Echo 0 // [|0|] OK
Generic.Echo 0 // [|0|] OK
Heterogeneous.Echo (0,1) // [|0; 1|] OK
Generic.Echo (0,1) // [|0; 1|] OK
Heterogeneous.Echo [|0|] // [|[|0|]|] OK?
Generic.Echo [|0|] // [|0|] OOPS!!
Heterogeneous.Echo ([|0|],[|1|])) // [|[|0|]; [|1|]|] OK
Generic.Echo ([|0|],[|1|])) // [|[|0|]; [|1|]|] OK
誰能解釋,如果觀察到的行爲是錯誤或功能?
UPDATE: 這related answer通信從F#開發團隊的確認,截至目前的錯誤已經在泛型類型參數的處理與地方屬性ParamArray
。
謝謝,托馬斯!這有助於理解爲什麼[there](http://stackoverflow.com/a/11068951/917053) 明確可用'Observable.StartWith()'重載解決了這個問題。 –