swift - 变异运算符的左侧不可变:“访问者”是“让”常量?为什么?
问题描述
在我试图从客人的钱中减去成本时,当我尝试使用运算符 -= 但是为什么呢?我将它声明为变量!我能做些什么?在 entry 函数和 bar 函数中抛出了错误:
struct ClubGuest: Guest {
var name: String
var money: Double
var onDrugs: Bool
}
var mikel = ClubGuest(name: "Mikel", money: 50.5, onDrugs: false)
var angelina = ClubGuest(name: "Angelina", money: 400, onDrugs: true)
var steve = ClubGuest(name: "Steve", money: 100.80, onDrugs: true)
var july = ClubGuest(name: "July", money: 1050, onDrugs: false)
struct Club: Party {
var name: String
var location: String
var entryPrice: Double
var guests: [Guest]
var maximumguests: Int
var revenue = 0.0
mutating func entry(visiter: Guest) {
if visiter.money > entryPrice && guests.count < maximumguests {
guests.append(visiter)
visiter.money -= entryPrice
revenue += entryPrice
} else {
stop()
}
GuestCheckUP(guest: visiter)
}
mutating func Bar(guest: Guest, drink: Drink) {
print("\(guest) want to buy a drink")
if guest.money >= drink.price {
guest.money -= drink.price
revenue += drink.price
print("\(guest.name) bought a \(drink.name) for \(drink.price)$, now he/she has \(guest.money)$ in his/her pocket")
} else {
print("\(guest.name) has too less money for a drink!")
}
}
mutating func GuestCheckUP(guest: Guest) {
if guest.onDrugs {
throwOut(visiter: guest)
}
}
mutating func throwOut(visiter: Guest) {
print("\(visiter.name) was throwed out by the security!")
}
func stop() {
print("Stop! No entry!")
}
func Earnings() {
print("The earnings of tonight are \(revenue)$")
}
}
解决方案
请注意,Guest 是一种协议,而不是一种类型。您应该首先确保在您的 Guest 协议中声明money
属性需要一个 setter,使您的方法通用并为其添加 inout 关键字:
protocol Guest {
var money: Double { get set }
// your code
}
mutating func entry<T: Guest>(visiter: inout T) {
// your code
}
推荐阅读
- python-3.x - 不能将 SQLite Row 对象与多处理库一起使用
- whmcs - WHMCS 5.1 升级到版本 7.1
- java - 如何加载新的 RecycleView?
- reactjs - 如何通过使用exact在默认路由中使用子路由
- r - R:对大型数据框或矩阵中的各个列数据进行排名
- azure-devops - 通过市场安装的所有(构建管道)新扩展都不会显示在“添加任务”上
- azure - 如何在 Ionic 应用程序中从 open.window() 返回到 Azure B2C 身份验证工作流返回到特定页面?
- php - 获取数组中的订单数据以在 Woocommerce 中对其进行 JSON 编码
- python - 在python中计算crc8 dvb s2
- python - 重塑盘中价值熊猫的每日数据