当前位置: 首页 > 面试题库 >

计算属性和带闭包的属性集之间的区别

越伟泽
2023-03-14
问题内容

我是Swift的新手。计算属性和设置为闭包的属性之间有什么区别?我知道每次都会重新计算一个计算属性。封盖是否有所不同?即

关闭:

var pushBehavior: UIPushBehavior = {
    let lazilyCreatedPush = UIPushBehavior()
    lazilyCreatedPush.setAngle(50, magnitude: 50)
    return lazilyCreatedPush
}()

计算:

var pushBehavior: UIPushBehavior {
    get{
        let lazilyCreatedPush = UIPushBehavior()
        lazilyCreatedPush.setAngle(50, magnitude: 50)
        return lazilyCreatedPush
    }
}

问题答案:

第一个是通过闭包初始化的存储属性。第二个是计算属性。

存储的属性的初始化关闭被调用一次,只有一次,但你可以改变存储的属性值(除非您更换varlet)。当您希望封装代码以在单个简洁的代码块中初始化存储的属性时,此功能很有用。

但是,每次引用变量时都会调用计算属性的块。当您希望每次引用计算属性时都调用代码时,这很有用。通常,当每次引用存储的属性时都需要重新计算计算的属性时(例如,从其他可能是私有的存储属性重新计算),您可以执行此操作。

在这种情况下,您无疑需要存储的属性(第一个示例),而不是计算的属性(第二个示例)。您大概每次引用该变量时都不需要新的推送行为对象。

顺便说一下,在第一个示例中,您内部引用了它的实例化。如果您想要这种行为,则必须使用lazy关键字:

lazy var pushBehavior: UIPushBehavior = {
    let lazilyCreatedPush = UIPushBehavior()
    lazilyCreatedPush.setAngle(50, magnitude: 50)
    return lazilyCreatedPush
}()

但是,如果属性为static,则将自动延迟实例化。



 类似资料:
  • 问题内容: 对于“属性”和“属性”之间的区别,我通常感到困惑,并且找不到很好的资源来简洁地详细说明这些区别。 问题答案: 属性是一种特殊的属性。基本上,当Python遇到以下代码时: 它查找中,然后检查,看它是否有一个,或方法- 如果这样做,这是一个性质。如果它 是 一个属性,则不仅会返回该对象(就像对其他任何属性一样),还会调用该方法(因为我们一直在进行查找),并返回该方法返回的内容。 有关Py

  • 本文向大家介绍综合属性和继承属性之间的区别,包括了综合属性和继承属性之间的区别的使用技巧和注意事项,需要的朋友参考一下 合成属性和继承属性都是语言语义的一部分,该语言为其构造提供含义,例如标记和语法结构。语义有助于解释符号,符号的类型及其相互之间的关系,其分析可判断源程序中构造的语法结构是否衍生出任何含义。现在,基于属性的特征,我们可以区分综合属性和继承属性 以下是合成属性和继承属性之间的重要区别

  • 本文向大家介绍vue中计算属性(computed)、methods和watched之间的区别,包括了vue中计算属性(computed)、methods和watched之间的区别的使用技巧和注意事项,需要的朋友参考一下 前言 本文主要给大家介绍了关于vue中计算属性(computed)、methods和watched之间的区别,分享出来供大家参考学习,下面来一起看看详细的介绍: 计算属性 和普通属

  • 问题内容: 和属性有什么区别?它们似乎都具有提供标识符的相同目的。 我想知道(特别是关于HTML表单)出于某种原因是否有必要或同时使用两者。 问题答案: 在表单提交中发送数据时使用该属性。不同的控件反应不同。例如,您可能有几个单选按钮,它们具有不同的属性,但属性相同。提交后,响应中只有一个值- 您选择的单选按钮。 当然,这还不止于此,但是它一定会让您思考正确的方向。

  • 问题内容: 谁能告诉我Javascript事件中和属性之间的确切区别以及示例,以及在哪种情况下使用哪个属性? 问题答案: 基本上,事件默认情况下会冒泡,因此两者之间的区别是: 是触发事件的元素(例如,用户单击) 是事件侦听器附加到的元素。

  • 本文向大家介绍watch和计算属性有什么区别?相关面试题,主要包含被问及watch和计算属性有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 通俗来讲,既能用computed 实现又可以用 watch 监听来实现的功能,推荐用 computed,重点在于 computed 的缓存功能 computed计算属性是用来声明式的描述一个值依赖了其它的值,当所依赖的值或者变量改变时,计算属性也会跟着