我使用typealias
和var
(或let
)
typealias IntFuction = (Int) -> Int
var IntFuction = (Int) -> Int
如果使用typealias
,则根本没有错误。但是,如果我尝试使用var
或let
,我会收到如下错误
consecutive statement on a line must be separated by ";"
使用closure,如果您可以使用typealias
或var
定义为变量,则应该没问题
当我使用var
将函数定义为变量
答案 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
}
发生错误是因为无法为变量分配(=
)类型,编译器需要注释(:
)