方法上下文定义的Swift泛型类型
是否存在由结果类型的上下文推断类型的模式的名称 例如,在本例中,我可以使用什么语言来记录方法上下文定义的Swift泛型类型,swift,generics,Swift,Generics,是否存在由结果类型的上下文推断类型的模式的名称 例如,在本例中,我可以使用什么语言来记录foo方法,并解释需要定义一个类型才能使该方法工作 protocol FooType { init() } func foo<T: FooType>() -> T { return T() } struct Bar: FooType { init() { print("bar") } } let bar: Bar = foo() // w
foo
方法,并解释需要定义一个类型才能使该方法工作
protocol FooType {
init()
}
func foo<T: FooType>() -> T {
return T()
}
struct Bar: FooType {
init() {
print("bar")
}
}
let bar: Bar = foo()
// works returns instance of Bar
let fooType = foo()
// fails because foo doesn't know what type to use
protocolfootype{
init()
}
func foo()->T{
返回T()
}
结构栏:FooType{
init(){
打印(“条”)
}
}
让bar:bar=foo()
//works返回Bar的实例
设fooType=foo()
//失败,因为foo不知道使用哪种类型
您无需对此进行记录
每个用Swift编写代码的人都知道,要调用泛型函数,其所有类型参数都必须进行推断,不能像这样填鸭式输入:
foo<Bar>()
foo()
人们会看到
foo
并说,“哦,我需要编译器来推断这个泛型参数的类型。”他们会理解这意味着什么。您不需要记录这一点
每个用Swift编写代码的人都知道,要调用泛型函数,其所有类型参数都必须进行推断,不能像这样填鸭式输入:
foo<Bar>()
foo()
人们会看到
foo
并说,“哦,我需要编译器来推断这个泛型参数的类型。”他们会理解这意味着什么。代码注释不是为了解释代码的“如何”或“什么”。它解释了“为什么”。您不必向Swift程序员解释Swift,他们阅读您的编解码器注释并不是为了解释代码的“如何”或“什么”。它解释了“为什么”。你不必向正确阅读你的代码的Swift程序员解释Swift,我猜如果他们没有,至少编译器会给出有用的信息来引导他们正确的方向。+1正确,我猜如果他们没有,至少编译器会给出有用的信息来引导他们正确的方向。