Groovy传递含逗号值的Map作为参数时异常问题求助
Groovy参数串生成问题解决
原代码场景
func1(){ def value1 = "gal,dan" def prop = ['names': value1] func2(prop) } func2(prop){ def params_str = prop.collect { k, v -> "k=v" }.join(' ') }
问题描述
执行时提示dan has no value,系统把值里的逗号误当成键值对分隔符,期望生成正确的参数串:names=gal,dan。
问题根源
你写的collect闭包里,"k=v"是固定字符串,没有替换成实际的键和值变量,导致生成的不是names=gal,dan,而是k=v,后续处理这个错误字符串时自然会解析出错。
修复代码
把闭包里的字符串改成变量插值形式即可:
func1(){ def value1 = "gal,dan" def prop = ['names': value1] func2(prop) } func2(prop){ def params_str = prop.collect { k, v -> "${k}=${v}" }.join(' ') // 此时params_str的值就是"names=gal,dan" }
说明
用${k}和${v}分别引用闭包中的键和值变量,这样就能正确拼接出包含逗号的完整参数串,后续处理时就不会把值里的逗号当成分隔符了。
内容的提问来源于stack exchange,提问作者TheBadBoss
相关产品推荐
相关产品推荐

