【问题标题】:Swift - How to add struct attributes in an array? [duplicate]Swift - 如何在数组中添加结构属性? [复制]
【发布时间】:2021-04-12 14:55:10
【问题描述】:

我正在尝试为订购应用制作结帐屏幕。我制作了一个名为dish 的结构,它具有价格作为属性。我想显示总数,但我不知道如何合计价格。我尝试使用cart.reduce(0, +),但它给了我错误“对成员'+'的模糊引用”。

任何帮助/建议将不胜感激!

结构体和结构体数组:

//My struct
struct Dish {
    var price: Double
}

//Struct array
var cart: [Dish] = []

加入购物车:

//Add an item to cart
    @IBAction func DishTwoOrdered(_ sender: Any) {
        cart.append(Dish(price: 7.50))
        checkoutQuantity.text = "In your cart: \(cart.count)"
    }

添加索引:

@IBAction func ringUp(_ sender: Any) {
        //Error here
        let sum = cart.reduce(0, +)
        sumLabel.text = "Total: \(sum)"
    }

【问题讨论】:

标签: ios swift xcode


【解决方案1】:

尝试在 95 行使用这个

let sum = cart.reduce(0) { $0 + $1.price }

【讨论】:

  • 我认为您的答案比仅仅将其作为副本关闭要好。重复的问题意味着答案是“只使用 reduce”,但答案是真的“使用 reduce 并提供一个表达式,将当前总和与结构的特定字段相加。”
  • @DuncanC 是的,但他的回答不正确,他在看到我的评论后改变了。无论如何,我认为我们可以找到一个更好的副本来添加像这样stackoverflow.com/a/43911758/2303865
  • 就我个人而言,我更喜欢先使用 map 然后 reduce,比如 let sum = cart.map {$0.price}.reduce(0, +),因为它可以让你的 reduce 语句简化为 (initial_value, operator),但这是个人喜好。
  • @DuncanC 您可以在 Swift 5.2 中使用 map(\.price) 或使用我的答案中的扩展名 sum(\.price)
  • @LeoDabus 我没有看到对他的回答进行编辑。他是如何在不留下编辑条目的情况下更改它的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-04
  • 1970-01-01
  • 2015-02-02
  • 1970-01-01
  • 1970-01-01
  • 2021-04-26
  • 1970-01-01
相关资源
最近更新 更多