草庐IT

swift - 优化惰性集合

这个问题是关于优化惰性集合的。我将首先解释问题,然后给出一些可能的解决方案的想法。问题以粗体显示。问题Swift期望对Collection的操作是O(1)。一些操作,特别是prefix和suffix类类型,偏离并且在O(n)或更高的顺序上。惰性集合不能在初始化期间遍历基础集合,因为计算应该尽可能地推迟,直到实际需要该值为止。那么,我们如何优化惰性集合?当然这引出了一个问题,什么构成了优化的惰性集合?想法最明显的解决方案是缓存。这意味着对集合方法的第一次调用具有不利的时间复杂度,但对相同或其他方法的后续调用可能在O(1)中计算。我们将一些空间复杂度换成O(n)的数量级以加快计算速度。尝试

ios - Swift 中的惰性是什么意思?

这个问题在这里已经有了答案:LazyloadingPropertiesinswift(7个答案)关闭5年前。我经历了多个关于堆栈溢出的问题,但我没有得到可以定义什么是“LAZY”关键字以及我们为什么在Swift中使用它的答案。我是Swift的新手,请解释一下。

ios - 更详细的 Swift 惰性属性

惰性属性的基本概念如下。//Icreateafunctionthatperformsacomplextask.funcgetDailyBonus()->Int{println("Performingacomplextaskandmakingaconnectiononline")returnrandom()}//Isetdefineapropertytobelazyandonlyinstantiateitwhenitiscalled.IsetthepropertyequaltothefunctionwiththecomplextaskclassEmployee{//Propertiesl

ios - 在 Swift 中实现惰性属性并将其设置为 nil

我想实现一个惰性属性,这样它在第一次被访问之前不会有值。但是后来我想将它设置为nil以释放内存资源。然后,当应用程序再次尝试访问它时,它将被重新创建,因此当它即将被访问时,它不应该是nil。我翻阅了SwiftProgramming这本书并阅读了惰性属性,但是那里的信息很少,没有这个用例的例子。我看到了thisanswerbyRudolfAdamkovic并实现了该格式,但该项目无法在Xcode6.2beta3中编译:Useofundeclaredtype'String'letmodel=MyModelClass()lazyvarrecentlyAdded:[​String]=self.

ios - swift 中的惰性函数评估

想知道是否可以懒惰地评估一个简单的if语句。下面是一个将打印“thisisfoo”和“thisisbar”的示例,但我真的想让它只打印第一个字符串:funcfoo(){println("thisisfoo")}funcbar(){println("thisisbar")}funcmaybeFooOrBar(isFoo:Bool){letmyFoo=foo()letmyBar=bar()isFoo?myFoo:myBar} 最佳答案 不知道这是不是你想要的,你可以使用函数作为类型funcfoo(){println("thisisfoo

swift - 具有惰性属性的 Realm 中的复合键

我找到了在Swift中使用Realm和复合主键的绝佳解决方案:https://github.com/realm/realm-cocoa/issues/1192publicfinalclassCard:Object{publicdynamicvarid=0{didSet{compoundKey=compoundKeyValue()}}publicdynamicvartype=""{didSet{compoundKey=compoundKeyValue()}}publicdynamiclazyvarcompoundKey:String=self.compoundKeyValue()publ

Swift 惰性笛卡尔积

我在swift中有这个功能func*(lhs:T1,rhs:T2)->[(T1.Iterator.Element,T2.Iterator.Element)]{letproduct=lhs.flatMap({xinrhs.lazy.map{yin(x,y)}})returnproduct}我想让它惰性求值。我知道我可以使用lhs.lazy.flatmap但返回类型应该是什么?还是有更好的或其他方法来做这样的事情? 最佳答案 您可以创建一个type-erasedsequence,将其操作转发到基础具有相同Element类型的序列,隐藏了

swift - Swift 常量默认是惰性的吗?

我对Swift仍然不太了解......假设我想要一个属性来实例化用于多个子类的基类中的类,例如...lethorse=Horse();horse是在应用程序/类初始化后立即实例化还是在首次访问该属性时实例化?另一方面,使用lazyvar保证该属性仅在第一次访问时实例化...lazyvarhorse=Horse()但是horse不是常量。所以在这种情况下,如果我多次访问horse,我会创建多个horse实例,对吧?如果我同时想要两者,一个同时也是常量的惰性属性怎么办? 最佳答案 不完全是。假设您有一个Farm类,并且在Farm中有一个

Swift 惰性变量和 didReceiveMemoryWarning

我想在Swift中延迟加载一个nib文件,所以我这样做了lazyvarMyNib:UINib?={letuiNib:UINib=MyClass.nib();returnuiNib;}()我知道这只会被调用一次。所以,如果我得到一个didReceiveMemoryWarning,测试似乎表明将它设置为nil没有任何效果,因为它不会在以后访问时重新初始化,这可以通过ObjectiveC属性完成。更多的问题是NSFetchedResultControllers,因为我可能真的希望卸载数据负载,然后在以后重新加载。这在Swift中如何实现?谢谢 最佳答案

swift - 惰性计算变量

我正在尝试创建一个具有惰性计算变量magnitude的Vector结构,但我似乎找不到实现它的方法。这是我的:structVector{varx:Double=0.0{didSet{magnitudeActual=-1.0}}vary:Double=0.0{didSet{magnitudeActual=-1.0}}varmagnitudeActual:Double=0.0varmagnitude:Double{ifmagnitudeActual我尝试了很多方法来让它工作,但似乎没有任何效果。此外,willGet会很好,但不存在。 最佳答案