Matlab 可以进行惰性求值吗?
Can Matlab do lazy evaluation?
我认为您可以通过这种方式在 Matlab 中实现惰性求值:
foo = @() 1+1
% do some other things
bar = foo()
据我了解,函数在 foo()
被调用之前不会被实际计算。能否确认这算不算惰性求值?
据我所知,在 Matlab 中没有更好的方法来实现这一点,它是 also suggested here。请记住,Matlab 不会检测同一术语的多个评估。如果您执行以下操作:
foo = @() 1+1
bar=@()foo()*foo()
它将计算 foo 两次。相反,"traditional" 方式将对其求值一次:
foo=1+1
bar=foo+foo
我认为您可以通过这种方式在 Matlab 中实现惰性求值:
foo = @() 1+1
% do some other things
bar = foo()
据我了解,函数在 foo()
被调用之前不会被实际计算。能否确认这算不算惰性求值?
据我所知,在 Matlab 中没有更好的方法来实现这一点,它是 also suggested here。请记住,Matlab 不会检测同一术语的多个评估。如果您执行以下操作:
foo = @() 1+1
bar=@()foo()*foo()
它将计算 foo 两次。相反,"traditional" 方式将对其求值一次:
foo=1+1
bar=foo+foo