2016-02-13 59 views
4

认为你可以通过这种方式实现在Matlab懒评价:Matlab可以做懒惰评估吗?

foo = @() 1+1 
% do some other things 
bar = foo() 

据我了解功能实际上并不计算,直到foo()被调用。如果这被认为是懒惰的评估还是不能确定呢?

回答

3

据我所知,没有更好的方法在Matlab中实现这一点,它是also suggested here。请记住,Matlab不会检测同一个术语的多个评估。如果你做的东西是这样的:

foo = @() 1+1 
[email protected]()foo()*foo() 

它会评估foo两次。相反,“传统”方式将评估一次:

foo=1+1 
bar=foo+foo