gpt4 book ai didi

f# - 在 F# 中,有没有办法为基本类型定义类型检查的别名?

转载 作者:行者123 更新时间:2023-12-01 22:33:19 25 4
gpt4 key购买 nike

我想定义恰好由相同类型支持的类型(例如,FirstNameLastName,它们都是 string ), 但我希望对它们进行类型检查,这样我就不会错误地混合和匹配它们:

> type FirstName = string;;
type FirstName = string

> type LastName = string;;
type LastName = string

> let n : FirstName = "John";;
val n : FirstName = "John"

//I wish this were caught:
> let l : LastName = n;;
val l : LastName = "John"

有没有办法在 F# 中做到这一点,除了定义记录类型或类似的东西?

最佳答案

您可以使用单案例区分联合:

type FirstName =
| FirstName of string

type LastName =
| LastName of string

let n = FirstName "John"
let l: LastName = n // error

有关如何使用它们的更多信息,请参阅博客文章 here .

关于f# - 在 F# 中,有没有办法为基本类型定义类型检查的别名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28488846/

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