如何创建引用特定函数的函数类型的类型别名
Posted
技术标签:
【中文标题】如何创建引用特定函数的函数类型的类型别名【英文标题】:How to create typealias of a function type which refers to a particular function 【发布时间】:2016-10-20 21:46:01 【问题描述】:Swift 的official Documents 说
您可以像使用 Swift 中的任何其他类型一样使用函数类型。例如,您可以将常量或变量定义为函数类型,并为该变量分配适当的函数:
func addTwoInts(a: Int, _ b: Int) -> Int
return a + b
var mathFunction: (Int, Int) -> Int = addTwoInts
这里里面的示例代码:
它定义了一个名为
mathFunction
的变量,它有一个函数类型,它接受两个Int
值,并返回一个Int
值。将此新变量设置为引用名为 addTwoInts 的函数
问题:我想知道,函数类型可以像 Swift 中的任何其他类型一样使用,因为我怎样才能创建一个类型别名,它的函数类型具有两个 Int
值, 并返回一个 Int
值。将此新变量设置为引用名为 addTwoInts 的函数
我试过了,显然我错了。
【问题讨论】:
类型别名为类型定义了一个新名称,而不是一个值。typealias MyInt = Int = 17
也不会编译,因此与函数无关。
改为执行此操作 - typealias mathFunction = (Int, Int) -> Int
检查此以获取详细信息 medium.com/swift-programming/…
非常感谢你的解释我想我现在更明白了,我可以做到这一点typealias InInOutIn = (Int, Int) -> Int
var mathFunctionII: InInOutIn = addTwoInts
@vadian 是的,你已经指出了我误解的重点。 typealias
用于类型函数不是类型。感谢您的帮助
@vadian 这可能是个不好的问题:为什么变量可以有函数类型,我只是觉得有点奇怪。
【参考方案1】:
您不能将函数分配给typealias
。
你只能分配一个类型。
typealias mathFunctionType = (Int, Int) -> Int
let mathFunction: mathFunctionType = int1, int2 in
return int1 + int2
【讨论】:
以上是关于如何创建引用特定函数的函数类型的类型别名的主要内容,如果未能解决你的问题,请参考以下文章