草庐IT

四元组

全部标签

Swift 将可选元组解构为单独的可选值

Swift支持解构。funcpair()->(String,String)let(first,second)=pair()有没有办法将可选元组解构为单独的可选值?funcmaybePair()->(String,String)?let(maybeFirst,maybeSecond)=maybePair()maybeFirst和maybeSecond是可选字符串(String?)。 最佳答案 一个可能的解决方案(感谢@dfri简化了我最初的尝试):let(a,b)=maybePair().map{($0,$1)}??(nil,nil)

swift - 为什么我不能在 switch 语句中使用元组常量作为 case

我决定尝试使用Swiftcase语句和元组。它看起来像是该语言最酷的功能之一。我决定使用月/日/年元组。令我惊讶的是,我不能在switch语句中使用常量元组值作为case。这是一个示例(可以粘贴到Playground中并运行)importUIKittypealiasmdyTuple=(month:Int,day:Int,year:Int)letjoesBirthday:mdyTuple=(month:6,day:7,year:1978)letsomeday:mdyTuple=(6,7,1978)switchsomeday{//---------//Theline"casejoesBir

swift - 在 Swift 中,我可以在元组中使用函数类型吗?

我想使用一个包含函数类型的元组数组。例如:(Int,Bool,()->())然后我创建数组:varsomeList=[(Int,Bool,()->())]()但是在编译时这条语句有两个错误:预期的','分隔符表达式列表中的预期表达式那么可以在元组上使用函数类型吗?还是我错过了什么? 最佳答案 你可以这样做:typealiasTupleType=(Int,Bool,()->Void)varlist=[TupleType]()不幸的是,试图从数组中访问元组中的项目导致Playgrounds中断-“与Playground服务的通信意外中断

swift - 计算互补色、三元色、四元色和类似色

我创建了swift函数,我将颜色值发送到其中并希望返回三元和四元值。它有点工作,但我对颜色结果不满意。任何人都可以帮我微调公式吗?我关注了几个来源,但与几个基于网络的在线配色方案相比,返回的颜色太亮或太饱和。我知道这也是一个偏好问题,我有点喜欢下面代码的结果,但在某些颜色实例中,返回的一种颜色的结果太接近原始颜色,所以它几乎不可见。它仅适用于几种颜色...我使用的是这里的公式:我的代码:funcgetTriadColor(color:UIColor)->(UIColor,UIColor){varhue:CGFloat=0varsaturation:CGFloat=0varbrightn

ios - 如何在 UserDefaults 中保存元组数组

我在我的一个文件中使用了一个数组元组,并想开始将它保存在UserDefaults中。以下是我存储当前数据的方式:typealiassavemytuple=(Name:String,NameID:String,BookID:String,Picture:NSData)varsavefun=[savemytuple]()我已经研究并发现我可能需要对以下内容进行一些保存:NSKeyedArchiver.archivedDataWithRootObject这用于检索:NSKeyedUnarchiver.unarchiveObjectWithData不确定这种方式是否可行,因为我的元组有多种数据

ios - 有没有一种特定的方法可以在 Swift 中将元组用作集合元素?

我想对x-y网格中的坐标对元素执行集合操作。例如{(0,0),(1,4),(1,5),(2,3)}联合{(2,3),(1,4),(2,6)}={(0,0),(1,4),(1,5),(2,3),(2,6)}不幸的是,我无法想出一种将元组插入Swift的Set命令的方法,因为它说它们不符合“可散列”协议(protocol)。Error:type'(Int,Int)'doesnotconformtoprotocol'Hashable'我相信我有解决办法,但它涉及很多代码。有没有一种简单的方法让我在开始工作之前就错过了? 最佳答案 与其使用

swift - Swift 中的元组和函数参数

在Swift中,元组与函数参数有什么关系?在下面的两个例子中,函数返回相同的类型,即使一个接受一个元组而另一个接受两个参数。从调用者的角度来看(不看代码),函数采用元组参数还是常规参数没有区别。函数参数在某些方面与元组相关吗?例如functestFunctionUsingTuple()->(Int,String)->Void{funct(x:(Int,String)){print("\(x.0)\(x.1)")}returnt}functestFuncUsingArgs()->(Int,String)->Void{funct(x:Int,y:String){print("\(x)\(y

ios - 将 var 元组传递给枚举值

将基于变量的元组直接传递给具有基于元组值的枚举会导致编译错误。例如:我有一个枚举如下:enumAnswerType{caseObjective(Int)caseSubjective(question:Int,answer:String)}varstAnswer=(question:1,answer:"Student'sAnswer")letanswerType=AnswerType.Subjective(stAnswer)//Compilationerrorhere-"Missingargumentforparameteranswerincall"这会导致Swift2.1出现编译器错误

arrays - 如何检查元组数组是否包含 Swift 中的特定元组?

考虑以下Swift代码。vara=[(1,1)]ifcontains(a,(1,2)){println("Yes")}我只需要检查a是否包含元组,但代码会导致错误。Cannotfindanoverloadfor'contains'thatacceptsanargumentlistoftype'([(Int,Int)],(Int,Int))'为什么会这样以及如何正确使用contains? 最佳答案 您可以使用谓词并检查是否相等:lettuples=[(1,1),(0,1)]lettuple1=(1,2)lettuple2=(0,1)i

ios - 在swift中添加任意两个数字元组

我创建了一个函数来添加看起来像(Int,Int)的元组。func+(x:(T,T),y:(T,T))->(T,T){return(x.0+y.0,x.1+y.1)}它适用于(10,20)+(15,15)现在我需要的是改进函数以接受任何相同长度的可变长度元组。怎么可能呢?最后(12)+(23)和(10,12,16)+(11,36,25)应该可以工作。 最佳答案 元组需要在编译时确定其元素数量,因此类似可变参数的函数将不起作用。您需要为+运算符添加覆盖,对于您需要支持的每个元组大小:func+(x:(T,T),y:(T,T))->(T,