Julia中如何避免重复计算函数输出实现多布尔条件判断?
在Julia中避免重复计算
sum(x)的多条件判断方法 当然有办法,下面是几种符合你需求的写法,既能避免重复计算sum(x),也不用在外部作用域定义额外变量:
方法一:匿名函数即时调用
直接将sum(x)作为参数传给一个匿名函数,在函数内部完成多条件判断:
if (s -> s == 1 || s > 3)(sum(x)) # Do Something end
这里sum(x)只会计算一次,匿名函数接收这个结果后执行条件判断,整个逻辑写在一个表达式里,没有外部变量残留。
方法二:let块(可读性优先)
如果你更看重代码可读性,let块是更合适的选择——它会创建一个局部作用域绑定计算结果,同样不会污染外部变量,且逻辑清晰:
let s = sum(x) if s == 1 || s > 3 # Do Something end end
虽然这里用了变量s,但它只存在于let块的局部作用域中,完全符合你“不将结果存入(外部)变量”的隐含需求。
补充说明
虽然Julia的编译器可能会对重复调用的纯函数(比如sum(x)在x未修改时)做优化,自动避免重复计算,但显式写出上述写法更可靠,也能让代码意图更明确。
内容的提问来源于stack exchange,提问作者Nathan Boyer
相关产品推荐
相关产品推荐

