为什么函数不被视为命名类型?

时间:2016-01-19 15:24:43

标签: swift types named

这直接来自Swift开发者指南。

  

在Swift中,有两种类型:命名类型和复合类型。命名类型是在定义时可以赋予特定名称的类型。命名类型包括类,结构,枚举和协议。例如,名为MyClass的用户定义类的实例具有MyClass类型。除了用户定义的命名类型之外,Swift标准库还定义了许多常用的命名类型,包括表示数组,字典和可选值的类型。   ....   复合类型是一种没有名称的类型,在Swift语言本身中定义。有两种复合类型:函数类型和元组类型。

函数也有名称,为什么函数被认为是复合类型而不是命名类型?

2 个答案:

答案 0 :(得分: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 :(得分:-1)

函数不是类型,这就是函数不被视为复合类型的原因。这也是函数不在列表中的原因。

类型是类,枚举等。函数接近语言,而类等是面向对象的工作方式。