2016-06-09 40 views
1

我定義我作爲變量使用typealiasvar(或let有什麼區別使用VAR當VS typealias

typealias IntFuction = (Int) -> Int 

var IntFuction = (Int) -> Int 

如果正在使用typealias,沒有錯誤可言。但是,如果我試圖爲使用varlet,我收到錯誤,如下面

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

隨着closure,它應該是好的,如果你可以使用typealiasvar定義爲一個變量

任何人都可以解釋當我使用var將函數定義爲變量時發生了什麼

+3

你正混淆了實際的類型及其值!在第二行使用':'而不是'='! – luk2302

回答

2

typealias IntFuction = (Int) -> Int。定義類型IntFuction相同(Int) -> Int

var IntFuction = (Int) -> Int是不正確

var IntFuction: (Int) -> Int 聲明變量IntFuction具有類型:(Int) -> Int

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 
} 

由於類型可以發生錯誤(=)不能被分配給一個變量,編譯器需要一個註釋(:

相關問題