【问题标题】:Is it "LEGAL" or USED in real life to place a class/struct inside of a class/struct?将类/结构放置在类/结构中是“合法的”还是在现实生活中使用?
【发布时间】:2016-10-29 18:40:55
【问题描述】:
struct Shape{
var length: Float = 0
var width: Float = 0

struct Rectange {
    var length = Shape().length
    var width = Shape().width

    var area: Float{
        get{
            return length * width
        }
    }


}   
}

我知道如何将值从一个结构分配给嵌套结构。我只是想看看这是在现实生活中使用还是“合法”。

【问题讨论】:

  • “法律”是什么意思?它确实可以编译,所以它可能是合法的;)
  • 我的意思是,人们在现实生活中真的会这样做吗?程序员是否使用这种策略? @appzYourLife
  • String.CharacterView, Calendar.Identifier 是 Swift 标准库中的示例。
  • 嵌套类型定义不能替代 子类化,如果这是您的想法的话。您刚刚定义了两个(或多或少不相关的)类型ShapeShape.Rectangle
  • 是的。没关系。为什么不呢?

标签: swift class struct


【解决方案1】:

它肯定在现实生活中使用。 Apple 甚至在他们的示例代码示例中推荐了这一点。 https://developer.apple.com/library/content/LucidDreams/Introduction/Intro.html

【讨论】:

  • 输入ShapeRectCircle 并将RectCircle 放在Shape 下是否有意义?
  • 嗯,这取决于你想做什么。嵌套这些类型的优点是有时更容易以这种方式推理事物。在该示例代码中,您会看到许多在类中定义的枚举,因为它们在这些类中使用。我不确定你的情况是否适合。
【解决方案2】:

是的,这种方法在现实生活中使用。

看看这个例子(这里我使用的是枚举,但我们可以想象结构和类的类似例子)

struct Spaceship {
    enum Speed {
        case warp, light
    }
    let maxSpeed: Speed
}

struct Airplane {
    enum Speed {
        case subsonic, supersonic
    }
    let maxSpeed: Speed
}

两个结构都在其中定义了Speed 类型。由于Speed 枚举是在SpaceshipAirplane 的命名空间内定义的,因此没有命名冲突,一切都很清楚。

【讨论】:

  • 好的,我有点明白你的方向了。我的例子是如果你有一个类型Shape,类型Rectangle,然后类型Square。将这两种类型放在Shape 中也有意义吗? @appzYourLife
  • @FusionPointInc:我更新了答案,请看一下。
  • 是的,我明白了,但我的意思是,如果你把那架飞机放在宇宙飞船下面,那还在练习吗?你有没有价值观并不重要。
猜你喜欢
  • 2010-09-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-16
  • 2023-03-14
  • 1970-01-01
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多