Generics 如何定义泛型函数及其返回参数
我正在努力解决一个关于泛型的看似微不足道的问题 我有这些方法Generics 如何定义泛型函数及其返回参数,generics,f#,Generics,F#,我正在努力解决一个关于泛型的看似微不足道的问题 我有这些方法 let toTypedCollection r l = l |> List.iter (fun x -> r.Add(x) r let toRowDefinitions = toTypedCollection (new RowDefinitionCollection()) let toColsDefinitions = toTypedCollection (new ColumnDefinitio
let toTypedCollection r l =
l |> List.iter (fun x -> r.Add(x)
r
let toRowDefinitions = toTypedCollection (new RowDefinitionCollection())
let toColsDefinitions = toTypedCollection (new ColumnDefinitionCollection())
在哪里
但是现在的问题是,toRowDefinitions
的结果签名如下
DefinitionCollection<RowDefiniton> -> list RowDefinition -> DefinitionCollection<RowDefinition>
DefinitionCollection->list RowDefinition->DefinitionCollection
除了返回类型之外,这一切都很好。我绝对需要一个行定义集合
而不是定义集合
有人知道如何做到这一点吗?试试
让toTypedCollection)l=…
为我解决了一个简单示例中的问题,不过您可能需要对toRowDefinitions
/toColsDefinitions
进行注释,以确定确切的返回类型。尝试让toTypedCollection)l=…
为我解决了一个简单示例中的问题,不过您可能需要对toRowDefinitions
/toColsDefinitions
进行注释,以确定确切的返回类型。尝试让toTypedCollection)l=…
为我解决了一个简单示例中的问题,不过您可能需要对toRowDefinitions
/toColsDefinitions
进行注释,以确定确切的返回类型。尝试让toTypedCollection)l=…
#
在一个简单的示例中为我解决了这个问题,不过您可能需要对toRowDefinitions
/toColsDefinitions
进行注释,以确定确切的返回类型。我想您正在寻找这样的东西:
let toTypedCollection (r : 'T when 'T :> ICollection<_>) l =
l |> List.iter (fun x -> r.Add(x))
r
让toTypedCollection(r:'T when'T:>ICollection)l=
l |>List.iter(乐趣x->r.Add(x))
R
其中ICollection
是来自System.Collections.Generic
的集合,但是如果需要具体类型,当然可以使用DefinitionCollection
显示一个较短的符号,以实现类似类型的注释,而不命名'T
:当'T:>ICollection时,您可以编写#ICollection
。在本例中,'T
不在其他地方使用,因此此符号较短
还有一种类型安全性较低的方法,可以使
toTypedCollection
内联,并添加一个静态成员约束,r
需要一个Add
方法;但是有了它,它就可以在任何类型上使用Add
方法,这通常不是一个好主意。我想您正在寻找这样的方法:
let toTypedCollection (r : 'T when 'T :> ICollection<_>) l =
l |> List.iter (fun x -> r.Add(x))
r
让toTypedCollection(r:'T when'T:>ICollection)l=
l |>List.iter(乐趣x->r.Add(x))
R
其中ICollection
是来自System.Collections.Generic
的集合,但是如果需要具体类型,当然可以使用DefinitionCollection
显示一个较短的符号,以实现类似类型的注释,而不命名'T
:当'T:>ICollection时,您可以编写#ICollection
。在本例中,'T
不在其他地方使用,因此此符号较短
还有一种类型安全性较低的方法,可以使
toTypedCollection
内联,并添加一个静态成员约束,r
需要一个Add
方法;但是有了它,它就可以在任何类型上使用Add
方法,这通常不是一个好主意。我想您正在寻找这样的方法:
let toTypedCollection (r : 'T when 'T :> ICollection<_>) l =
l |> List.iter (fun x -> r.Add(x))
r
让toTypedCollection(r:'T when'T:>ICollection)l=
l |>List.iter(乐趣x->r.Add(x))
R
其中ICollection
是来自System.Collections.Generic
的集合,但是如果需要具体类型,当然可以使用DefinitionCollection
显示一个较短的符号,以实现类似类型的注释,而不命名'T
:当'T:>ICollection时,您可以编写#ICollection
。在本例中,'T
不在其他地方使用,因此此符号较短
还有一种类型安全性较低的方法,可以使
toTypedCollection
内联,并添加一个静态成员约束,r
需要一个Add
方法;但是有了它,它就可以在任何类型上使用Add
方法,这通常不是一个好主意。我想您正在寻找这样的方法:
let toTypedCollection (r : 'T when 'T :> ICollection<_>) l =
l |> List.iter (fun x -> r.Add(x))
r
让toTypedCollection(r:'T when'T:>ICollection)l=
l |>List.iter(乐趣x->r.Add(x))
R
其中ICollection
是来自System.Collections.Generic
的集合,但是如果需要具体类型,当然可以使用DefinitionCollection
显示一个较短的符号,以实现类似类型的注释,而不命名'T
:当'T:>ICollection时,您可以编写#ICollection
。在本例中,'T
不在其他地方使用,因此此符号较短
还有一种类型安全性较低的方法,可以使
toTypedCollection
内联,并添加一个静态成员约束,r
需要一个Add
方法;但是有了它,它就可以用Add
方法处理任何类型,这通常不是一个好主意。添加返回类型注释(toTypedCollection(r:…)l:DefinitionCollection
)不起作用吗?@john:这是我已经得到的。但是我需要一个RowDefinitionCollection试用让toTypedCollection)l
或其他什么。。。甚至在返回任何内容之前强制输入(to'T)。可以尝试发布一些包含所有所需代码的完全“运行”的代码示例……添加返回类型注释(toTypedCollection(r:…)l:DefinitionCollection
)不起作用吗?@john:这就是我已经得到的。但是我需要一个rowDefinitionCollection试用让toTypedCollection)l
或s