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"] ])
优化点说明:
- 用
ends_with()替代手动取字符:GDScript内置的ends_with()方法直接判断字符串结尾,比item[item.length() - 1]写法更简洁,也避免了边界场景的潜在问题。 - 三元表达式简化分支:把原来的if-else块压缩成一行,逻辑清晰,减少冗余代码。
- 字符串格式化替代拼接:用
%占位符处理字符串拼接,不仅代码更整洁,还能方便控制数值格式(比如%.2f确保价格显示两位小数)。
内容的提问来源于stack exchange,提问作者TechnoM4ncer
相关产品推荐
相关产品推荐

