Swift:为什么函数有参数和返回值类型?

时间:2016-06-03 10:43:58

标签: swift swift2

我已经填补了现有Swift编程语言技能的一些空白,然后再转向更高级的功能。

我检查了苹果......" Swift编程语言"指南和谷歌搜索显示了有关使用参数的规则的大量信息,但我正在寻找整体为什么,而不是如何......

问题:

为什么需要在Swift中为函数提供参数和返回值类型?

(我不是询问参数名称等,而是关于“为什么'”的更高级别(一般)问题

我在Swift中使用简单的C-Style函数制作了许多程序,而不需要参数或返回值,因为我知道函数应该为我做什么。

很简单,例如

func printName() {
print("John")
}

然而,有例外'像一些内置的Swift函数。 E.g ....

  

func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > Int {   返回colors.count   }

等。用于表视图或集合视图用法。

因此,我在函数中看到使用参数+返回值(类型)的唯一原因是确保只输入和输出特定类型的数据。

换句话说,它是一种避免意外结果的方法。所以行为几乎就像一个Switch语句,如果我满足一个特定的条件 - 将会出现一个特定的输出......(在函数中......"一个动作")。

我是否理解这种理解,试图理解为什么/何处需要使用参数& /或使用函数返回值类型?还是有其他实际原因吗?如果是这样,你能提供一个例子吗?

非常感谢提前!!!!

2 个答案:

答案 0 :(得分:2)

如果您不使用参数,则可以使用范围内可见的内容。

  • 如果您的函数在ViewController中,那个VC中的所有属性,也是全局范围变量(可怕)
  • 如果您的函数在全局范围内,则只能使用全局范围符号(再次可怕)

你确实想要使用参数传递内容。这样你就可以:

  • 自动检查类型(编译正在为你做)
  • 检查选项
  • 检查值范围
  • 使用单元测试测试您的功能。如果您使用全局符号,那么您将与这些符号绑定,无法更改它们
  • 减少维护:功能以外的更改不会对您造成影响

此外,拥有明确的返回类型有助于其他开发人员和您的未来自我理解从该功能返回的内容:一个元组?一个可选的数组?一个号码?此外,定义输出类型可帮助您测试功能。

仅使用全局变量&程序(处理这些全局变量的代码块)可以小规模地工作。这种旧方法与FORTRAN,BASIC,COBOL等语言一起使用......在项目发展的那一刻,您需要将代码的一部分与另一部分隔离开来。为此:

  • 使用功能&功能性方法
  • 使用OOP

答案 1 :(得分:0)

让我们设想一个sum函数

func sum(a: Int, b:Int) -> Int {
    return a + b
}

如果我们删除参数类型

会发生什么
func sum(a, b) -> Int {
    return a + b // what?
}

当然,编译器不允许这样做,但让我们试着想象一下。

现在ab可以是任何内容(例如StringUIImage)。我们如何编写代码来汇总2 things并获得Int

另一项测试,让我们删除返回类型

func sum(a:Int, b:Int) -> ??? {
    return a + b
}

现在让我们尝试调用我们的疯狂功能

let tot: Int = sum(1, b: 2)

但由于sum可以返回任何类型的值,我们如何将结果放入Int常量?