【问题标题】:Why do we use Multiple dot notations in swift为什么我们在 swift 中使用多点符号
【发布时间】:2016-10-10 22:13:07
【问题描述】:

我有以下快速代码:

import UIKit

struct Foo{
    let bar = Bar()
}

struct Bar {
    let bas = Bas()
}

struct Bas {
    func sayHello(){
        print("hello")
    }
}

let foo = Foo()
foo.bar.bas.sayHello()

将一个类的对象声明到另一个类有什么意义,即为什么要使用foo.bar.bas.sayHello(),我可以简单地写bas.sayHello()

【问题讨论】:

  • foo.bar.basbasBas 的两个不同实例
  • 这与您在Objective-C [[[foo bar] bas] sayHello]; 中使用多个方括号相同。用于调用更多变量/函数。
  • 我为什么不简单地创建Bas的对象并直接调用它的方法呢?
  • 如果你创建了一个A 类,然后在其中声明一个B 类实例,然后将Bas 类实例声明到B 类中,因此两者都不同,你称之为Bas's通过创建其新实例或BBas 实例来发挥作用。如果您可以直接从Bas 调用sayHello(),那么您将其称为foo.bar.bas.sayHello() 是您的错误
  • 如果您不遵循模型,则没有任何优势。但是如果你有一个像Student ---> Profile ---> Roll No., Name, Father Name, Class 这样的模型,那么就很容易理解代码实际上做了什么并且看起来不错。

标签: swift syntax


【解决方案1】:

foo.bar.basbasBas 的两个不同实例。稍作修改,这更容易观察到:

struct Foo{
    let bar = Bar()
}

struct Bar {
    let bas = Bas(name: "Jeremy")
}

struct Bas {
    let name: String
    func sayHello(){
        print("hello \(name)")
    }
}

let foo = Foo()
foo.bar.bas.sayHello() // hello Jeremy

let bas = Bas(name: "Agatha")
bas.sayHello() // hello Agatha

【讨论】:

  • 将一个结构的对象声明给另一个有什么好处??
  • 你有一个对象图……比如user.profileInformation.firstName 来获取用户的名字。这使您可以组织信息。
  • 谢谢@Aaron Brager。您能否提及任何链接以了解我的问题的基础知识?
猜你喜欢
  • 2015-11-21
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 2019-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多