2016-01-19 38 views
2

這是直接從Swift開發者指南。爲什麼函數不被視爲命名類型?

在Swift中,有兩種類型:命名類型和複合類型。命名類型是一種在定義時可以賦予特定名稱的類型。命名類型包括類,結構,枚舉和協議。例如,名爲MyClass的用戶定義類的實例具有MyClass類型。除了用戶定義的命名類型之外,Swift標準庫還定義了許多常用的命名類型,包括代表數組,字典和可選值的類型。 .... 複合類型是一種沒有名稱的類型,在Swift語言中定義。有兩種複合類型:函數類型和元組類型。

函數也有名稱,爲什麼函數考慮複合類型而不是命名類型?

回答

3

函數具有名稱和類型。函數名稱僅表示該函數的名稱;它不表示該函數的類型

事實上,名稱和類型的功能是相互獨立的:

  • 具有相同名稱的多個功能允許有不同的類型,
  • 具有相同類型的多個功能被允許有不同的名字。

以下爲具有相同名稱的兩個函數和不同類型的示例:

func one(x: Double, y: Double) -> Bool { 
    return true 
} 
func one(x: Double) -> Bool { 
    return true 
} 

第一功能one的化合物類型是「的函數採取DoubleDouble,並返回一個Bool「,而第二功能one的類型是」取Double並返回Bool「的函數。

這裏是相同類型的兩個函數的例子,但具有不同的名稱:

func one(x: Double) -> Bool { 
    return true 
} 
func two(x: Double) -> Bool { 
    return false 
} 

兩者的功能的化合物類型是「的函數採取Double並返回一個Bool」。這兩種功能onetwo都是該化合物類型的實例

-1

函數不是一個類型,這就是爲什麼函數不被視爲複合類型。這也是爲什麼功能不在該列表中的原因。

類型是類,枚舉等。函數接近於語言,而類和類似的是面向對象的工作方式。

+2

根據開發人員指南,函數類型被視爲複合類型。 – iwsnmw

+4

函數不是一個類型(就像變量不是),但它們有一個類型。 _function types_被認爲是_compound types_,OP想知道原因。 – DarkDust

+0

但這並不意味着一個函數是一個類型,返回類型可以是複合類型,對不對? – jbehrens94

相關問題