【发布时间】:2020-02-27 01:03:59
【问题描述】:
问题背景:我正在同时学习函数域建模和 Swift。我正在使用的示例在 F# 中。一个这样的例子是声明单例联合:
//F# code
type CustomerId = CustomerId of int
type OrderId = OrderId of int
let customerId = CustomerId 42
let orderId = OrderId 42
printfn "%b" (orderId = customerId) //produces a compile error
因此,在 F# 中,声明本质上都是 Ints 的类型安全原语似乎非常容易。
在 Swift 中 typealias 不会做同样的事情:
typealias CustomerId = Int
typealias OrderId = Int
let customerId: CustomerId = 42
let orderId: OrderId = 42
customerId == orderId // true!
现在,我知道 Swift 中的所有原始类型本质上都是 structs,但我还远远不够复杂,无法理解 Swift 代码库来弄清楚 Int 是如何创建的。
有人知道与 F# 声明等效的简单类型安全 Swift 吗?
【问题讨论】:
-
谢谢丹,这真的很有帮助!
标签: swift types functional-programming