【问题标题】:Change property value and create new instance更改属性值并创建新实例
【发布时间】:2020-08-25 21:01:07
【问题描述】:

我有一个看起来像这样的类,我需要设置 t 恤的默认颜色(例如白色),当用户从数组中选择另一种颜色时 (例如. red) 创建一个 new tshirt,其属性 color 仅填充所选颜色 (red)。我该怎么做??

class Tshirt {
    var color: [String]
    var size: Int
    var price: Int

    init(color: [String], size: Int, price: Int) {
        self.color = color
        self.size = size
        self.price = price   
}

如果这听起来很愚蠢,我很抱歉,但我是面向对象编程的新手。

【问题讨论】:

  • 这个 SwiftUI 怎么样? — 另外:为什么颜色是数组,为什么是字符串数组?
  • @matt Ops 我错误地添加了 SwiftUI。颜色应包含可选颜色列表。
  • 所以你说它们是字符串并不重要。 — 好的,但是如果color 是一个可能 颜色的数组,那么你没有代表实际 颜色的属性。您似乎对一件 T 恤和提供可能的件 T 恤感到困惑。
  • 我不知道这是否可能,但第一件 T 恤应该包含所有可能的颜色。在用户选择之后,我需要创建一个全新的 T 恤,其中颜色为红色,例如红色。我需要两个不同的课程吗? (正如我所说,我是这个领域的初学者)

标签: arrays swift object instance


【解决方案1】:

为什么要在选择颜色后创建新 T 恤,而不是仅仅更改该 Tshits 颜色的值?如果有几种颜色可供选择,您可以为颜色创建一个枚举,并在创建对象时将默认颜色设置为白色。

class Tshirt {
    var color: Color = .white
    var size: Int
    var price: Int
    
    enum Color {
        case white, black, blue, green, red //etc...
    }

    init(size: Int, price: Int) {
        self.size = size
        self.price = price
    }
}
let yourShirt = Tshirt(size: 8, price: 8)

yourShirt 将具有.white 的颜色属性。然后,当用户选择所需的颜色时,只需更改衬衫的颜色即可。

yourShirt.color = .red
print(yourShirt.color)
//Prints "red"

如果您真的想用用户定义的颜色实例化一个新对象,或者提供用指定颜色实例化 Tshirt 对象的选项,您可以将初始化程序更改为具有默认值以提供选项:

init(size: Int, price: Int, color: Color = .white) {
    self.size = size
    self.price = price
    self.color = color
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    • 1970-01-01
    相关资源
    最近更新 更多