【发布时间】:2018-02-08 00:26:31
【问题描述】:
假设我有一个像 class Foo <T> 这样的泛型类型和像 func bar (_ arg: T) 这样的方法。
如果我做let foo = Foo<Void>(),我不能在没有得到的情况下做foo.bar():
Cannot invoke 'bar' with no arguments
这不是以前在旧版本的 Swift 中工作的吗?还是我做错了什么?
foo.bar(()) 有效,但显然不够理想。
【问题讨论】:
-
您可以在
extension Foo where T == Void中定义func bar() { bar(()) }重载,类似于the example shown here。 -
我不确定你的问题是什么。该方法有一个
Void类型的参数,您必须在调用该方法时指定它。你的理想是什么? -
@Hamish 您的回答似乎有效。当你准备好时,我会接受的。
-
@Sulthan
foo.bar()是理想的选择。foo.bar(())2 个字符太多。它在以前的 Swift 版本中工作过。 -
@aleclarson 我决定最好只是更新我现有的答案,以说明它如何也可以用于方法,因此除非您有任何异议,否则我们可以将其关闭为立即欺骗。