MST

星途 面试题库

面试题:Rust函数默认参数在复杂场景下的应用及优化

假设有一个游戏开发场景,定义一个函数 `calculate_damage` 用于计算游戏角色的伤害值。该函数有多个参数,包括角色的攻击力 `attack_power`、技能倍率 `skill_multiplier`、目标防御力 `target_defense` 以及一个布尔值 `is_critical` 表示是否暴击。`skill_multiplier` 有默认值1.0,`is_critical` 有默认值 `false`。暴击时伤害翻倍(即 `skill_multiplier` 变为2.0)。要求:1. 实现该函数并确保代码逻辑清晰合理。2. 考虑到频繁调用该函数,对性能进行优化(例如使用合适的类型、减少不必要的计算等),并说明优化思路。
19.7万 热度难度
编程语言Rust

知识考点

AI 面试

面试题答案

一键面试
def calculate_damage(attack_power: int, skill_multiplier: float = 1.0, target_defense: int = 0, is_critical: bool = False) -> float:
    if is_critical:
        skill_multiplier = 2.0
    damage = (attack_power * skill_multiplier) - target_defense
    if damage < 0:
        damage = 0
    return damage

优化思路

  1. 参数类型指定:明确参数 attack_powertarget_defense 为整数类型,skill_multiplier 为浮点数类型,is_critical 为布尔类型,这样在函数调用时可以利用类型检查提高运行效率,并且在一些强类型语言中可避免类型转换带来的开销。
  2. 减少重复计算:将暴击时对 skill_multiplier 的修改放在函数开头,只进行一次判断和修改,而不是在每次计算伤害时都去判断是否暴击,从而减少不必要的计算。
  3. 避免负伤害:在计算完伤害后,通过一次判断将负伤害置零,避免在其他地方多次检查伤害是否为负,提升代码简洁性与效率。