首页 文章

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

提问于
浏览
2

在进入更高级的功能之前,我填补了现有Swift编程语言技能的一些空白 .

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

Question:

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

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

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

简单例如

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

但是,像一些内置的Swift函数一样存在“异常” . 例如....

func tableView(tableView:UITableView,numberOfRowsInSection section:Int) - > Int

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

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

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

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

提前谢谢了!!!!

2 回答

  • 0

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

    • 如果你的函数在ViewController里面,那个VC里面的所有属性,也是全局范围变量(可怕的)

    • 如果您的函数在全局范围内,则只能使用全局范围符号(再次可怕)

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

    • 自动检查类型(编译正在为你做)

    • 检查可选性

    • 检查值范围

    • 使用单元测试测试您的功能 . 如果您使用全局符号,则're tied to that symbols, can' t更改它们

    • 减少维护:功能之外的更改不会影响您

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

    仅使用全局变量和过程(处理这些全局变量的代码块)可以小规模地工作 . 这是使用FORTRAN,BASIC,COBOL等语言的旧方法......在项目增长的那一刻,您需要将代码的一部分与另一部分隔离开来 . 为了那个原因:

    • 使用功能和功能方法

    • 使用OOP

  • 2

    让我们想象一个 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 常数?

相关问题