F#泛型

F#泛型 首页 / F#入门教程 / F#泛型

泛型(Generics)允许延迟指定类或方法中的元素类型,直到在程序运行中才确认下来。

在F#中,函数值,方法,属性和聚合类型可以是通用的,泛型构造包含至少一个类型参数,通用函数和类型使您可以编写适用于各种类型的代码,而无需为每种类型重复执行代码。

泛型语法

//显式通用函数。
let function-name<type-parameters> parameter-list =
   function-body

//显式通用方法。
[ static ] member object-identifer.method-name<type-parameters> parameter-list [ return-type ] =
   method-body

//显式泛型类、记录、接口、结构
type type-name<type-parameters> type-definition
(* Generic Function *)
let printFunc x y =
   printfn "%A, %A" x y

printFunc<float> 10.0 20.0

编译并执行程序时,将产生以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-generics.html

来源:LearnFk无涯教程网

10.0, 20.0

您还可以通过使用单引号语法使函数通用-

(* Generic Function *)
let printFunction (x: 'a) (y: 'a) =
   printfn "%A %A" x y

printFunction 10.0 20.0

编译并执行程序时,将产生以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-generics.html

来源:LearnFk无涯教程网

10.0 20.0

请注意,当您使用通用函数或方法时,可能不必指定类型参数,但是,如果存在歧义,可以像在第一个示例中一样在尖括号中提供类型参数。

如果您有多个类型,则用逗号分隔多个类型参数。

范型类

像泛型函数一样,您也可以编写泛型类。以下示例演示了这一点-

type genericClass (x: 'a) =
   do printfn "%A" x

let gr=new genericClass<string>("zara")
let gs=genericClass( seq { for i in 1 .. 10-> (i, i*i) } )

编译并执行程序时,将产生以下输出-

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/fsharp/fsharp-generics.html

来源:LearnFk无涯教程网

"zara"
seq [(1, 1); (2, 4); (3, 9); (4, 16); ...]

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

教程推荐

深入剖析Java新特性 -〔范学雷〕

物联网开发实战 -〔郭朝斌〕

深度学习推荐系统实战 -〔王喆〕

系统性能调优必知必会 -〔陶辉〕

性能测试实战30讲 -〔高楼〕

黄勇的OKR实战笔记 -〔黄勇〕

Java并发编程实战 -〔王宝令〕

趣谈网络协议 -〔刘超〕

深入浅出gRPC -〔李林锋〕

好记忆不如烂笔头。留下您的足迹吧 :)