草庐IT

ios - 为什么在 swift 中一切都是元组?

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭7年前。Improvethisquestion所以我发现swift中的任何变量或常量都是一个元组。比如下面的变量x就是一个元组varx=15下面的语句是有效的并且计算出x的值作为元组的第一个元素x.0.0.0.0.0.0.0.0.0.0.0//outputs15我想知道为什么要构建这种语言来适应这种情况。有任何已知的(或非现实的)用例吗?

swift - 分配关联类型的元组,为什么只允许通过显式逐成员分配? (错误 : cannot express tuple conversion)

当将Int成员的元组分配给Int符合的(异构)协议(protocol)类型的元组时,似乎只允许通过显式逐成员分配执行此分配。protocolMyType{}extensionInt:MyType{}letintPair=(1,2)varmyTypePair:(MyType,MyType)//OKmyTypePair=(intPair.0,intPair.1)//OKletintPairToMyTypePair:((Int,Int))->(MyType,MyType)={($0.0,$0.1)}myTypePair=intPairToMyTypePair(intPair)//Forall

ios - 快速打开一个元组

这对我来说似乎是有效的代码,但它不会解开元组funcupdateUserDefaults(data:T){ifletdata=dataas?(String,Any){println(data.1)}}updateUserDefaults(("loop",true))我的目标是使它成为NSUserDefaults的通用setter。我使用泛型的原因是我可以很容易地在我的react代码中传递它如下(接下来需要一个T->()的函数:loop.producer|>map{("loop",$0)}|>start(next:updateUserDefaults)更新:看起来这似乎有效,它展开并可以

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服务的通信意外中断

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出现编译器错误