草庐IT

swift - 初始化参数中的 self

我想像这样在初始化参数中使用Self:classA{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}}我知道我可以在这个地方使用“A”,但我想实现这一点,如果某个类继承自A,那么它的初始化器将知道操作,因为它是类类型,而不仅仅是A。例如,如果我写道:classB:A{publicinit(finishBlock:((_operation:Self)->Void)?=nil){...}publicfuncfooOnlyInB(){}}然后我可以使用:letb=B{(operation)inoperation.fooOn

swift 错误 : 'Sequence' requires the types 'T' and 'ArraySlice<T>' be equivalent

我正在尝试更新数学库以与Swift3兼容,但我遇到了一个错误:'Sequence'requiresthetypes'T'and'ArraySlice'beequivalentApple关于Sequence的文档建议makeIterator()方法返回一个迭代器,它确实这样做了。迭代器似乎返回了grid中的一个元素变量,即变量T.我不太确定我在这里错过了什么。任何意见将是有益的。publicstructMatrixwhereT:FloatingPoint,T:ExpressibleByFloatLiteral{publictypealiasElement=Tletrows:Intletc

swift - 静态 boolean 值是 Swift 中的引用类型吗?

我正在做一些改变。在我的MenuScene类中,有一些boolean值是静态变量,boolean值,用于表示这些开关的状态。这些是否可以作为引用类型寻址,所以我可以确定其他对象能够通过对它们的唯一引用来更改它们的状态?梦想,在我梦想的伪代码中,我希望对iAmOn的更改会影响myButtonABC_state的状态classMenuScene{staticvarmyButtonABC_state:Bool=falsestaticvarmyButtonXYZ_state:Bool=falseoverrideonDidMoveToView{letbuttonABC=Button(withSt

swift - 当子类中有覆盖函数时如何转换为父类(super class)

创建了父类(superclass)Car和子类Jaguar。子类中的函数info()->Void覆盖了父类(superclass)的函数。已创建类型为Jaguar的名为theAuto的实例。问题:似乎我无法将theAuto转换为Car类型,请查看代码片段及其注释classCar{funcinfo(){print("You'vegotacar")}}classJaguar:Car{overridefuncinfo(){print("You'vegotaJaguar")}}lettheAuto=Jaguar()theAuto.info()//-->You'vegotaJaguarletau

swift - 这种类型错误的原因是什么?

两个问题:为什么这段代码编译失败?我相信(但不是100%肯定,我可能犯了一个错误)它的类型是正确的。错误信息是什么意思?我很困惑为什么预期的参数类型是_->_(或者也许我只是不知道在这种情况下_->_是什么意思)。这道题的目的是学习如何正确诊断这个错误信息,如果我以后再遇到它。代码:此代码无法编译并显示错误消息“无法将类型'A->B'的值转换为预期的参数类型'_->_':classZipList{letxs:[A]init(xs:[A]){self.xs=xs}funcmap(f:A->B)->ZipList{returnZipList(xs:self.xs.map(f))}}附加信息

ios - 用于测试对象类型的通用 Swift 函数

我正在尝试编写一个函数,它将一个对象和一个类型作为参数并返回一个bool值,指示该对象是否属于给定类型。似乎没有Type类型,所以我不确定该怎么做。我能做的最好的就是funcobjectIsType(object:AnyObject,someObjectOfType:T)->Bool{returnobjectisT}所以我可以做到objectIsType(x,5),测试是否x是一个Int或objectIsType(x,"hi")看看它是否是一个字符串,但我希望能够调用objectIsType(x,Int)看看是否x是一个Int和objectIsType(x,String)看看它是不是S

ios - 在 Realm 中查询(使用 Swift)

我在玩realm.io。我写了几个对象,现在我想查询它们。我的数据类:classSample:RLMObject{dynamicvarsampleKey:String=""}和我的查询代码@IBActionfuncreadLocalRecord(sender:UIButton){lets:NSString=NSString.stringWithString("sampleKey==SampleValue")letp:NSPredicate=NSPredicate(format:"sampleKey=%@",argumentArray:NSArray(object:NSString.st

types - Swift 中的类型 ((Int) -> Int) 是什么意思?

我正在阅读Apple对Swift的介绍并遇到了这样的例子:funcmakeIncrementer()->((Int)->Int){funcaddOne(number:Int)->Int{return1+number}returnaddOne}varincrement=makeIncrementer()increment(7)能否请您解释一下makeIncrementer函数的返回类型的语法?我知道这个函数返回另一个函数,但是((Int)->Int)在这种情况下的作用对我来说仍然不清楚。 最佳答案 表示该函数返回一个函数,返回的函数以

arrays - 为什么 Swift 在将多个类型项放入数组时不对 Any 进行类型推断

使用Xcode7.1开发swift2.2时有两种情况让我很困惑,请看下面的例子,谢谢首先,当导入Foundation时,我声明了一个包含两个项目的testArray,一个整数类型1和一个字符串类型“hello”,我的问题是为什么Swift类型推断testArray为Array(NSObject)而不是Array(Any)importFoundationlettestArray=[1,"hello"]print(testArray.dynamicType)//testArrayisArray其次,当我删除importFoundation时,下面的代码无法编译,错误消息是“Typeofex

swift - 打包数据类型与普通数据类型之间的区别

在Metal中,packed_float4和float4有什么区别? 最佳答案 此信息来自herefloat4的对齐方式为16字节。这意味着这种类型的内存地址(例如0x12345670)将被16整除(也就是最后一个十六进制数字是0)。packed_float4在另一方面具有4字节的对齐方式。地址的最后一位将是0、4、8或c这在您创建自定义结构时很重要。假设您想要一个包含2个普通float和1个float4/packed_float4的结构:structA{floatx,y;float4z;}structB{floatx,y;pack