我知道,要访问每个成员,你可以使用点表示法使用索引号@H_301_2@
var tupleList = ("A",2.9,3,8,5,6,7,9)for each in tupleList { println(each)}
//错误:类型不符合协议序列@H_301_2@ 是的你可以!
func iterate<C,R>(t:C,block:(String,Any)->R) { let mirror = reflect(t) for i in 0..<mirror.count { block(mirror[i].0,mirror[i].1.value) }}
瞧!@H_301_2@
let tuple = ((false,true),42,42.195,"42.195km")iterate(tuple) { println("\(iterate([0,1]) { println("\() => \()") }iterate(tuple.0){ println("\() => \()")}iterate(tuple.0.0) { println("\() => \()")} // no-opstruct Point { var x = 0.0,y = 0.0 }class Rect { var tl = Point(),br = Point() }iterate(Point()) { println("\() => \()") }iterate(Rect()) { println("\() => \()") }) => \()") }iterate(["zero":0,"one":1]) { println("\() => \()") }
注意,最后一个不是一个元组,所以没有发生任何事情(虽然它是一个1元组或“单个”哪些内容可以访问.0,反射(它).count是0)。@H_301_2@
有趣的是,iterate()可以迭代其他类型的集合。@H_301_2@
这个集合包括类和struct!@H_301_2@
注意:作为块的第二个参数传递的值是Any类型。您必须将其转换回原始类型的值。@H_301_2@ 总结
以上是内存溢出为你收集整理的任何方式来迭代一个元组在swift?全部内容,希望文章能够帮你解决任何方式来迭代一个元组在swift?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)