Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
方法上下文定义的Swift泛型类型_Swift_Generics - Fatal编程技术网

方法上下文定义的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正确,我猜如果他们没有,至少编译器会给出有用的信息来引导他们正确的方向。