我在F#做了一個功能如何解決這個關於out和tuple形式的互操作問題?
let tryParseArray tryParse (separator:char) (line: string) =
// inside the function I use the tuple form of tryParse
它工作正常,如果我把它以這樣一種方式:tryParseArray Int32.TryParse ',' "2,3,2,3,2"
現在我想這個功能是在C#中可以作爲很好,所以我這樣做:
static member TryParseArray (line, tryParse, separator) =
line |> tryParseArray tryParse separator
然後我意識到TryParseArray
其實需要tryParse
參數爲FSharpFunc
,這是不友善的C#好,所以我想這:
static member TryParseArray (line, [<Out>] tryParse: (string * byref<'a> -> bool), separator) =
line |> tryParseArray tryParse separator
但現在tryParseArray
不接受tryParse
作爲有效參數(錯誤類型)
我應該怎麼辦?
我想在C#中我可以打電話給TryParseArray("2,3,2,3,2", Int32.TryParse, ',')
以及
+1顯示如何在委託參數中放置'[]'屬性。 –
Daniel
thx,基本上解決了我的問題。儘管如此,在F#中,我不能'讓r = Lib.T.TryParse(「1,2,3」,int.TryParse,',')',任何解決方法? (我知道我可以調用'tryParseArray') –
colinfang
Lib.T.TryParse(「1,2,3」,(fun s r - > System.Int32.TryParse(s,r)),',')? – desco