下列的这个问题我想知道如何(或是否)可以扩展通用 F# 数组类型。
我可以这样做:
type System.Array with
member a.Last = a.GetValue(a.Length - 1)
但正如托马斯提到的,它是非通用的。接下来我尝试了这个但它不起作用:
type Microsoft.FSharp.Collections.Array with // Error: Array is not defined
member a.Last = a.[a.Length - 1]
在 F# 源中我找到了这个命名空间,但它也不起作用:
type Microsoft.FSharp.Primitives.Basics.Array with // Error: Array is not defined
member a.Last = a.[a.Length - 1]
这有点令人困惑 - 但我最近在 F# 规范中寻找一些内容并发现了这一点:
type 'T ``[]`` with
member a.Last = a.[a.Length - 1]
[| 1 .. 10 |].Last
双反引号编码通常用于将保留关键字转换为有效的 F# 标识符(例如,如果您想要一个名称中包含空格的属性,或者名为let
)。这里,这可能意味着编译器需要处理[]
作为普通类型“名称”而不是作为数组的特殊语法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)