Terraform Azure资源组配置中signum函数的使用疑问:能否替换为三元表达式?
关于Terraform中count使用signum的疑问解答
首先明确结论:完全可以直接替换成 count = var.create ? 1 : 0,两种写法在当前场景下的效果完全一致。
为什么会有人用signum函数?
signum() 函数的作用是返回数字的符号:输入正数返回1,输入0返回0,输入负数返回-1。在这个场景里,var.create ? 1 : 0 已经明确输出1或0,套上signum()后结果和原表达式完全相同——signum(1)=1,signum(0)=0。
这种写法大概率是出于以下原因:
- 旧的代码习惯:比如有些开发者习惯用signum来统一处理可能包含正负值的数字输入,但在这个布尔转数字的场景下完全没必要。
- 冗余的写法:可能是复制粘贴其他场景的代码后没做精简,或者误以为signum能带来什么额外作用,但实际上在这里是画蛇添足。
替换后的优势
直接用count = var.create ? 1 : 0更直观,一眼就能看懂是根据布尔变量控制资源是否创建(1个或0个),不需要额外理解signum函数的作用,代码可读性更高。
内容的提问来源于stack exchange,提问作者Cyborganizer
相关产品推荐
相关产品推荐

