Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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
Ios 在swift中将[Int]转换为(Int),反之亦然_Ios_Arrays_Swift - Fatal编程技术网

Ios 在swift中将[Int]转换为(Int),反之亦然

Ios 在swift中将[Int]转换为(Int),反之亦然,ios,arrays,swift,Ios,Arrays,Swift,如何转换整型数组 let beforeSorting = [1, 2, 3, 4, 0, 6, 7, 8, 9, 10] 到 在swift中也是相反的吗 脚本 我想对这些值应用一些操作,所以我将这些值转换为数组形式 let array = [a, b, c,..] // counting 20 elements 在应用一些操作之后,例如排序。我需要将这些值放回属性 所以我用这些属性做了一个元组。这是我的问题。如何将新数组分配给tuple。(一次设置所有属性) 就像(a,b,c,d…)=mya

如何转换整型数组

let beforeSorting = [1, 2, 3, 4, 0, 6, 7, 8, 9, 10]

在swift中也是相反的吗

脚本 我想对这些值应用一些操作,所以我将这些值转换为数组形式

let array = [a, b, c,..] // counting 20 elements
在应用一些操作之后,例如排序。我需要将这些值放回属性

所以我用这些属性做了一个元组。这是我的问题。如何将新数组分配给tuple。(一次设置所有属性)


就像
(a,b,c,d…)=myarray

元组必须具有预定义的大小和类型。所以,你所能做的就是拥有一些便利,这些便利可以通过多种方式实现。例如,您可以创建一个包装器:

typealias MyTuple = (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int)
class ToupleWrapper {
    private var values: [Int]
    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {
        values = [a, b, c, d, e, f]
    }
    convenience init(array: [Int]) {
        self.init(a: array[0], b: array[1], c: array[2], d: array[3], e: array[4], f: array[5])
    }
    convenience init(tuple: MyTuple) {
        self.init(a: tuple.a, b: tuple.b, c: tuple.c, d: tuple.d, e: tuple.e, f: tuple.f)
    }
    var array: [Int] {
        return values
    }
    var tuple: MyTuple {
        return (values[0], values[1], values[2], values[3], values[4], values[5])
    }
}
使用方法:

func foo() {
    let arrayFromValue = ToupleWrapper(a: 3, b: 2, c: 1, d: 4, e: 2, f: 2).array
    let arrayFromTouple = ToupleWrapper(tuple: (0, 1, 3, 2, 4, 2)).array
    let tupleFromArray = ToupleWrapper(array: [2, 3, 1, 4, 2, 2]).tuple
}

不,你不能以安全的方式这样做。元组具有在编译时已知的固定长度,而数组的长度是在运行时获得的


将元组转换为数组是可能的,但前提是所有元组元素都是相同类型或具有公共类型-您只需引用.0。10个元素。

为什么要将
数组
转换为
元组
,反之亦然?即使这样做有意义,也没有简单的方法,因为您无法动态创建特定大小的元组,这与数组不同。我想从数组中分配一些属性值,因为在我的编辑器中,这似乎是一个XY问题。你的确切目标是什么?@Saranjith如果没有更多的上下文,你编辑的代码就毫无意义。为什么变量存储在元组中?如何创建该元组?为什么不直接将变量添加到数组中,而不是将它们添加到元组中呢?Int是值类型,因此无法将值设置到数组中,并在数组重新排列后从数组中获取值。考虑在单独的结构式答案中包装每一个值。非常感谢。有什么简单的方法可以做到这一点吗。当20个属性到来时,这将成为messy@Saranjith不是元组。也许,如果您将所有关于如何使用此函数的情况都添加到示例中,我们可能会找到更好的解决方案。请注意,如果数组小于10,则初始值设定项将崩溃elements@Cristik是的,我实际上在考虑一些默认设置,但需要另一种方法,使答案不可读。。。或者每个属性都像b:array.count>1那样执行?数组[1]:0正确的答案可能是一个先决条件(如果使用错误大小的数组调用它被视为程序员错误),也可能是一个失败的初始值设定项(可能是
init?
)。默认值几乎肯定会打破这种转换的界限,使其很难实现通用性(这目前非常容易)。
typealias MyTuple = (a: Int, b: Int, c: Int, d: Int, e: Int, f: Int)
class ToupleWrapper {
    private var values: [Int]
    init(a: Int, b: Int, c: Int, d: Int, e: Int, f: Int) {
        values = [a, b, c, d, e, f]
    }
    convenience init(array: [Int]) {
        self.init(a: array[0], b: array[1], c: array[2], d: array[3], e: array[4], f: array[5])
    }
    convenience init(tuple: MyTuple) {
        self.init(a: tuple.a, b: tuple.b, c: tuple.c, d: tuple.d, e: tuple.e, f: tuple.f)
    }
    var array: [Int] {
        return values
    }
    var tuple: MyTuple {
        return (values[0], values[1], values[2], values[3], values[4], values[5])
    }
}
func foo() {
    let arrayFromValue = ToupleWrapper(a: 3, b: 2, c: 1, d: 4, e: 2, f: 2).array
    let arrayFromTouple = ToupleWrapper(tuple: (0, 1, 3, 2, 4, 2)).array
    let tupleFromArray = ToupleWrapper(array: [2, 3, 1, 4, 2, 2]).tuple
}