You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中结构体新实例调用方法的方式及报错解决方案

报错原因

Swift 中结构体属于值类型,默认不允许在实例方法内修改实例自身的存储属性。你的chargePhone方法需要修改电量属性,但未添加mutating修饰符,因此触发编译报错。
另外你描述的方法逻辑存在条件倒置:需求为电量低于90时充电,你写的判断逻辑是电量不低于90才充电,不符合实际预期。

修复步骤
  • 给需要修改结构体属性的实例方法添加mutating关键字,标记该方法会修改值本身
  • 修正充电判断条件,补充电量上限校验,避免电量值超过100
  • 调用该方法的结构体实例必须用var声明,不能用let声明(常量值类型不允许修改)

修复后可运行的参考代码:

struct Phone {
    var batteryLevel: Int
    
    mutating func chargePhone() {
        // 电量高于等于90时不充电
        guard batteryLevel < 90 else { return }
        batteryLevel += 10
        // 限制电量最大值为100
        batteryLevel = min(batteryLevel, 100)
    }
}

// 调用示例
var myPhone = Phone(batteryLevel: 70)
myPhone.chargePhone()
// 执行后 myPhone.batteryLevel 为 80
原报错截图

编译报错截图

内容的提问来源于stack exchange,提问作者ali9000

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:15:37