Swift - 什么类型是'()'?

时间:2017-09-06 04:07:31

标签: swift swift3

我测试了一些代码以了解完成处理程序,我发现有()->()()等类型。

我知道()->()表示“没有参数,没有返回值”;但是()是什么类型的?

如果我定义这样的函数:

func sayHello(){
  print("hello")
}

然后检查类型:

type(of: sayHello) // ()->()
type(of: sayHello()) // ()

功能执行”(())是一种类型?

2 个答案:

答案 0 :(得分:3)

您真正要问的是为什么<div> <h2>{{ get_date('today') }}</h2> <!-- today's inputs .... --> </div> <div> <h2>{{ get_date('tomorrow') }}</h2> <!-- tomorrow's inputs .... --> </div> 会导致type(of: sayHello())

首先考虑一下()的作用。它实际上调用了函数。所以sayHello()告诉你该调用的结果类型。由于type(of:)的返回类型为sayHello,因此类型为Void。它基本上是第一次调用()时看到的() () -> ()的第二个{。}}。

如果您将type(of:)更改为sayHello而不是Int,则第二个Void会返回type(of:)而不是Int }。第一个()会从type(of:)更改为() -> ()

tl; dr - () -> Int代表()。调用Void的返回类型。

答案 1 :(得分:0)

typealias Void = ()
  

未明确指定返回的函数的返回类型   类型;一个空元组(即())。

     

声明函数或方法时,不需要指定   如果没有返回值,则返回类型。但是,的类型   函数,方法或闭包总是包含一个返回类型,即   如果没有指定,则无效

     

声明a时,使用Void或空元组作为返回类型   闭包,函数或不返回值的方法。