一尘不染

Swift中的通用typealias

swift

在haskell中,您可以执行以下操作:

type Parser a = String -> [(a, String)]

我试图在Swift中做类似的事情。到目前为止,我没有运气写过这些代码。

typealias Parser<A> = String -> [(A, String)]
typealias Parser a = String -> [(a, String)]
typealias Parser = String -> [(A, String)]

那么,这根本不可能很快吗?如果还有其他方法可以实现此行为?

更新: 似乎Swift 3现在支持通用类型别名
https://github.com/apple/swift/blob/master/CHANGELOG.md


阅读 197

收藏
2020-07-07

共1个答案

一尘不染

typealias从Swift 3.0开始可以使用泛型。这应该为您工作:

typealias Parser<A> = (String) -> [(A, String)]

这是完整的文档:https :
//developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Declarations.html#//apple_ref/swift/grammar/typealias-
declaration

用法(来自@Calin Drule评论):

func parse<A>(stringToParse: String, parser: Parser)
2020-07-07