我有這個接口在C#編寫...F#編譯錯誤實現C#接口
public interface IFoo {
IEnumerable<T> Bar<T>(IEnumerable<T> list);
}
一個簡單的C#實現是直接...
public class CsFoo : IFoo
{
public IEnumerable<T> Bar<T>(IEnumerable<T> list)
{
return list;
}
}
一個簡單的F#的實現也很簡單,當...
type FsFoo() =
interface IFoo with
member this.Bar list =
list
但是,當我嘗試比賽上列表 ...
type FsFoo() =
interface IFoo with
member this.Bar list =
match list with
| [] -> [] // error
| list -> list
我得到這個錯誤...
這種表達預計有型 System.Collections.Generic.IEnumerable <「一>但這裏有鍵入'b列表
你能幫我理解這個錯誤嗎?我該如何改變F#代碼來修復它?
謝謝...
您正在嘗試使用列表模式與序列相匹配。其實,這個錯誤說得相當清楚。 如果你想使用列表模式匹配,你必須將序列轉換爲列表:'list |> Seq.toList'。 –