GDScript中能否在表达式内执行带副作用的操作并返回值?
在GDScript中实现带副作用语句的分支返回
你遇到的问题是GDScript的条件表达式(三元语法)不支持将包含多个语句的代码块作为分支——它要求每个分支必须是单个表达式,不能混合执行语句和返回值。这里有两种可行的解决方式:
方式一:改用if-else语句结构
这是最直接的方案,把逻辑拆分成标准的条件语句,既能执行断言这类带副作用的操作,也能正常赋值:
var result if input == "yellow": result = "bananas" elif input == "orange": result = "oranges" else: assert(false, "Unsupported fruit color %s detected!" % input) result = "bananas" # 回退到默认值
方式二:用函数封装带副作用的逻辑
如果想保留类似三元表达式的简洁结构,可以把需要执行副作用+返回值的逻辑封装成函数。函数调用本身是一个合法的表达式,内部可以执行任意语句:
func get_default_fruit(input): assert(false, "Unsupported fruit color %s detected!" % input) return "bananas" var result = ( "bananas" if input == "yellow" else "oranges" if input == "orange" else get_default_fruit(input) )
GDScript的条件表达式设计上更偏向纯表达式场景,不支持嵌入语句块,所以上述两种方式是最常用的替代方案。
内容的提问来源于stack exchange,提问作者Cory Klein
相关产品推荐
相关产品推荐

