我测试了一些代码以了解完成处理程序,我发现有()->()
和()
等类型。
我知道()->()
表示“没有参数,没有返回值”;但是()
是什么类型的?
如果我定义这样的函数:
func sayHello(){
print("hello")
}
然后检查类型:
type(of: sayHello) // ()->()
type(of: sayHello()) // ()
“功能执行”(()
)是一种类型?
答案 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或空元组作为返回类型 闭包,函数或不返回值的方法。