gpt4 book ai didi

Swift T 不转换为 T

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

func mapGen<T>(transform:((T)->T),collection:Array<T>) -> Array<T> {

func cat<T>(initial:Array<T>,element:T) -> Array<T> {
var mInitial = initial;
var telement = transform(element);
mInitial.append(telement);
return mInitial;
}
var k = collection.reduce([],cat);
return k;
}

我在尝试运行这段代码时遇到问题。我是 swift 的新手,有人能帮我吗?

我正在尝试从 reduce 函数中编写一个通用映射,但它似乎不起作用。

最佳答案

这里:

func mapGen<T>(transform:((T)->T),collection:Array<T>) -> Array<T> {

您正在定义泛型类型 T,并且在嵌套函数中:

func cat<T>(initial:Array<T>,element:T) -> Array<T> {

你正在(重新)定义一个具有相同名称的新泛型类型,但它实际上是不同的类型 - 你甚至可以将它命名为 V 或 NewType,你仍然会遇到相同的错误。

我推断在你的情况下你希望嵌套函数使用相同的 T 类型,所以不要重新定义它:

 func cat(initial:Array<T>,element:T) -> Array<T> {

它应该按预期工作

关于Swift T 不转换为 T,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26246211/

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