gpt4 book ai didi

swift - 从 Swift 中的函数返回任何类型

转载 作者:可可西里 更新时间:2023-11-01 00:49:24 25 4
gpt4 key购买 nike

我正在尝试创建一个可以返回任何类型的函数。我希望它返回一个Any类型的对象,但是其他类型的对象,即StringBoolInt 等。您明白了。

您可以以这种方式使用泛型轻松地做到这一点:

func example<T>(_ arg: T) -> T {
// Stuff here
}

但是是否可以在不传递任何相同类型的参数的情况下做到这一点?这是我的想法:

func example<T>() -> T {
// Stuff here
}

当我尝试这样做时,一切正常,直到我调用该函数,然后我收到此错误:

generic parameter 'T' could not be inferred

最佳答案

is it possible to do it without passing in any arguments of the same type?

答案是肯定的,但编译器需要有一种方法来推断泛型函数的正确版本。如果它知道将结果分配给什么,它就会工作。因此,例如,您可以显式键入 letvar 声明。以下代码在 Swift 3 的 Playground 中运行。

protocol Fooable
{
init()
}

extension Int: Fooable {}
extension String: Fooable {}

func foo<T: Fooable>() -> T
{
return T()
}

let x: String = foo() // x is assigned the empty string
let y: Int = foo() // y is assigned 0

关于swift - 从 Swift 中的函数返回任何类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40725234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com