我认为你可以用这种方式在Matlab中实现懒惰评估:
foo = @() 1+1
% do some other things
bar = foo()
据我所知,在调用foo()
之前,实际上并未对该函数进行求值。可以确认这是否算作懒惰评估?
答案 0 :(得分:3)
据我所知,没有更好的方法可以在Matlab中实现这一点,also suggested here。请记住,Matlab不会检测同一术语的多个评估。如果你做的事情如下:
foo = @() 1+1
bar=@()foo()*foo()
它将评估foo两次。相反,"传统"方式将评估一次:
foo=1+1
bar=foo+foo