使用var vs typealias有什么区别

时间:2016-06-09 07:21:40

标签: ios function swift2 var type-alias

我使用typealiasvar(或let

将我的函数定义为变量
typealias IntFuction = (Int) -> Int

var IntFuction = (Int) -> Int

如果使用typealias,则根本没有错误。但是,如果我尝试使用varlet,我会收到如下错误

consecutive statement on a line must be separated by ";"

使用closure,如果您可以使用typealiasvar定义为变量,则应该没问题

当我使用var将函数定义为变量

时,是否有人可以解释发生了什么?

2 个答案:

答案 0 :(得分:2)

typealias IntFuction = (Int) -> Int。定义与IntFuction

相同的(Int) -> Int类型

var IntFuction = (Int) -> Int不正确

var IntFuction: (Int) -> Int 声明变量IntFuction的类型为:(Int) -> Int

答案 1 :(得分:1)

typealias是类型或闭包的同义词。

Foundation框架的一个例子是

typealias NSTimeInterval = Double

之后声明NSTimeInterval可以在任何地方使用,而不是Double

在你的情况下

typealias IntFunction = (Int) -> Int

您可以声明该类型的变量(请参阅不同的拼写)

var intFunction : IntFunction = { counter in
   return 2 + counter
}

完全相同
var intFunction : (Int) -> Int = { counter in
   return 2 + counter
}

发生错误是因为无法为变量分配(=)类型,编译器需要注释(: