Arrays 在Swift中,是否有方法将数组元素分配给多个变量?
我有一个这样的长数组:Arrays 在Swift中,是否有方法将数组元素分配给多个变量?,arrays,swift,variable-assignment,Arrays,Swift,Variable Assignment,我有一个这样的长数组: let array = [1, 2, 3] var a, b, c:Int [a, b, c] = array 我想把所有元素的值分配给不同的变量,如下所示: let array = [1, 2, 3] var a, b, c:Int [a, b, c] = array 我知道使用元组是可能的,但我需要使用数组,而不需要单独处理每个变量。在可用的数组中,没有“数组模式”或类似的东西,因此无法在数组上进行模式匹配。但是,您可以做的是: let array = [1,
let array = [1, 2, 3]
var a, b, c:Int
[a, b, c] = array
我想把所有元素的值分配给不同的变量,如下所示:
let array = [1, 2, 3]
var a, b, c:Int
[a, b, c] = array
我知道使用元组是可能的,但我需要使用数组,而不需要单独处理每个变量。在可用的数组中,没有“数组模式”或类似的东西,因此无法在数组上进行模式匹配。但是,您可以做的是:
let array = [1,2,3]
let (a, b, c) = (array[0], array[1], array[2])
如果数组少于3个元素,这将在运行时引发错误。这很有用,但它不是内置的。而非变异的仿制药让它很痛苦
let(a,b,c)=[1,2,3]。tuple3!
///无法扩展元组的解决方法。
公共结构元组{
公共变量元素:元素
公共init(u元素:元素){
self.elements=元素
}
}
公共扩展元组{
//标记:-2-元组
///创建一个包含多个元素的新元组。
静态下标(
元组:元素,元素:元素2
)->(元素0、元素1、元素2)
其中Elements==(Element0,Element1){
(tuple.0,tuple.1,元素)
}
//标记:-3元组
///创建一个包含多个元素的新元组。
静态下标(
元组:元素,元素:元素3
)->(元素0、元素1、元素2、元素3)
其中Elements==(Element0、Element1、Element2){
(tuple.0,tuple.1,tuple.2,元素)
}
}
公共扩展序列{
typealias Tuple2=(元素,元素)
typealias Tuple3=(元素,元素,元素)
typealias Tuple4=(元素,元素,元素,元素)
var tuple2:tuple2?{makeTuple2()?.tuple}
var tuple3:tuple3?{makeTuple3()?.tuple}
var tuple4:tuple4?{makeTuple4()?.tuple}
private func makeTuple2()->(
tuple:Tuple2,
getNext:()->元素?
)? {
var iterator=makeIterator()
让getNext={iterator.next()}
警卫
设_0=getNext(),
让_1=getNext()
else{return nil}
返回((_0,_1),getNext)
}
私有函数makeTuple3()->(
tuple:Tuple3,
getNext:()->元素?
)? {
警卫
let(tuple,getNext)=makeTuple2(),
let element=getNext()
else{return nil}
返回(Tuple[Tuple,element],getNext)
}
私有函数makeTuple4()->(
tuple:Tuple4,
getNext:()->元素?
)? {
警卫
let(tuple,getNext)=makeTuple3(),
let element=getNext()
else{return nil}
返回(Tuple[Tuple,element],getNext)
}
}
问题是您为什么需要这个?只要使用集合索引而不是变量如果我有10个变量,并且我需要创建一个函数来根据数组更改它们的变量,我如何做到这一点而不单独指定每个变量只要使用数组本身。如果需要,您可以使用inout
关键字。您需要的是一个包含所有属性的结构。简单,永远不会太迟。最好现在就修好,否则会升级。你真的是在建议这样的事情吗?是的。它应该在标准图书馆。这对我有用,谢谢