如何创建引用特定函数的函数类型的类型别名

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) -> Intvar mathFunctionII: InInOutIn = addTwoInts @vadian 是的,你已经指出了我误解的重点。 typealias 用于类型函数不是类型。感谢您的帮助 @vadian 这可能是个不好的问题:为什么变量可以有函数类型,我只是觉得有点奇怪。 【参考方案1】:

您不能将函数分配给typealias

你只能分配一个类型。

typealias mathFunctionType = (Int, Int) -> Int

let mathFunction: mathFunctionType =  int1, int2 in
    return int1 + int2

【讨论】:

以上是关于如何创建引用特定函数的函数类型的类型别名的主要内容,如果未能解决你的问题,请参考以下文章

js基础 之 引用类型

2017-5-27引用类型之Object类型

如何在 Dart 中使用类型别名/类型定义(也是非函数)?

TypeScript 如何为泛型函数创建泛型类型别名?

使用typedef给函数指针类型一个别名

函数高级类型名别名if-else 的使用包的使用for循环swich的使用数组的使用