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

GDScript中为字典非s结尾键添加s的高效实现方法

优化后的实现方案

可以从简化逻辑判断、优化字符串处理两个方向来精简代码,以下是几种更高效的写法:

写法一:精简判断+字符串格式化

var inventory = {
    "Apple":    {"Cost": 0.99, "Stock": 3},
    "Orange":   {"Cost": 1.49, "Stock": 11},
    "Grapes":   {"Cost": 3.99, "Stock": 2},
}

for item_name in inventory:
    # 用内置方法判断结尾,三元表达式直接生成复数形式
    var plural_item = item_name if item_name.ends_with("s") else item_name + "s"
    # 用格式化字符串替代拼接,可读性更高
    print("There are %d %s, and they cost %.2f each." % [
        inventory[item_name]["Stock"],
        plural_item,
        inventory[item_name]["Cost"]
    ])

写法二:进一步压缩(省略中间变量)

如果觉得中间变量没必要,可以直接把复数判断嵌入格式化语句:

var inventory = {
    "Apple":    {"Cost": 0.99, "Stock": 3},
    "Orange":   {"Cost": 1.49, "Stock": 11},
    "Grapes":   {"Cost": 3.99, "Stock": 2},
}

for item_name in inventory:
    print("There are %d %s, and they cost %.2f each." % [
        inventory[item_name]["Stock"],
        item_name if item_name.ends_with("s") else item_name + "s",
        inventory[item_name]["Cost"]
    ])

优化点说明:

  1. 用ends_with()替代手动取字符:GDScript内置的ends_with()方法直接判断字符串结尾,比item[item.length() - 1]写法更简洁,也避免了边界场景的潜在问题。
  2. 三元表达式简化分支:把原来的if-else块压缩成一行,逻辑清晰,减少冗余代码。
  3. 字符串格式化替代拼接:用%占位符处理字符串拼接,不仅代码更整洁,还能方便控制数值格式(比如%.2f确保价格显示两位小数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 01:19:50