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

Swift入门:为游戏玩家Master类实现存活判断及数组处理需求

修正后的Swift玩家类实现与存活玩家过滤展示方案

嘿,我已经把你代码里的问题都修正完毕,并且完整实现了你提出的四个功能点,下面是具体的说明和最终可用的代码:

功能实现细节

  • isAlive计算属性:已经正确实现为只读计算属性,通过判断hp > 0来返回玩家的存活状态,完全符合需求。
  • 生成10个玩家数组:利用(0..<10)的循环为每个玩家生成唯一名称(玩家0到玩家9),并随机分配0-20之间的生命值,确保每个玩家的hp值大概率不同。
  • 过滤存活玩家:使用数组的filter方法,精准筛选出isAlive为true的玩家实例。
  • 映射并展示列表:通过map方法将存活的玩家实例转换为自定义的描述字符串,最后用更清晰的格式打印输出存活玩家列表。

完整修正代码

import Foundation
import UIKit // 补充导入UIKit框架,否则UIViewController会编译报错

class Master {
    let playerName: String
    let hp: Int
    let avatar: String?
    
    // 1. 实现isAlive计算属性,判断玩家生死
    var isAlive: Bool {
        return hp > 0
    }
    
    // 修正初始化逻辑:移除冗余的默认值赋值,直接通过初始化参数完成属性赋值
    init(playerName: String, hp: Int, avatar: String? = nil) {
        self.playerName = playerName
        self.hp = hp
        self.avatar = avatar
    }
}

// 实现CustomStringConvertible协议,自定义玩家实例的字符串描述
extension Master: CustomStringConvertible {
    var description: String {
        let status = isAlive ? "存活" : "死亡"
        let avatarInfo = avatar?.isEmpty ?? true ? "无头像" : "有头像"
        return "\(playerName) - (\(status) / \(hp)) - \(avatarInfo)"
    }
}

class MasterViewController: UIViewController {
    var masters = [Master]()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 2. 创建包含10个不同hp值的玩家数组
        (0..<10).forEach { index in
            masters.append(Master(
                playerName: "玩家\(index)",
                hp: Int.random(in: 0...20),
                avatar: nil
            ))
        }
        
        // 3. 过滤数组仅保留存活玩家
        let aliveMasters = masters.filter { $0.isAlive }
        
        // 4. 映射结果数组并以列表形式展示
        let mappedMasters: [String] = aliveMasters.map { $0.description }
        print("存活玩家列表:")
        mappedMasters.forEach { print("- \($0)") }
    }
}

额外优化说明

  • 补充了UIKit框架的导入,原代码遗漏该导入会导致UIViewController编译失败。
  • 优化了description的字符串拼接逻辑,让代码更简洁易读。
  • 调整了打印格式,将存活玩家列表以项目符号形式输出,比原代码的数组打印更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:12:44