gpt4 book ai didi

.net - F# 中灵活类型注释的用途是什么?

转载 作者:行者123 更新时间:2023-12-02 14:36:11 25 4
gpt4 key购买 nike

我正在学习 F#,但我不明白灵活类型的目的,或者更好的是,我无法理解这样写的区别:

set TextOfControl (c : Control) s = c.Text <- s

并写下:

set TextOfControl (c : 'T when 'T :> Control) s = c.Text <- s

其中 ControlSystem.Windows.Forms.Control 类。

最佳答案

你的例子没有什么区别。如果返回类型受到限制,您就会开始看到差异:

let setText (c: Control) s = c.Text <- s; c
let setTextGeneric (c: #Control) s = c.Text <- s; c

let c = setText (TreeView()) "" // return a Control object
let tv = setTextGeneric (TreeView()) "" // return a TreeView object

请注意,#Control'T 当 'T :> Control 时的快捷方式。 Type constraints对于为子类型创建通用函数很重要。

例如,

let create (f: _ -> Control) = f()

let c = create (fun () -> Control()) // works
let tv = create (fun () -> TreeView()) // fails

对比

let create (f: _ -> #Control) = f()

let c = create (fun () -> Control()) // works
let tv = create (fun () -> TreeView()) // works

关于.net - F# 中灵活类型注释的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14457571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com