【发布时间】:2012-06-28 03:26:58
【问题描述】:
作为一个实验(并且因为我从用户数据生成匿名函数),我运行了以下 MATLAB 代码:
h = @(x) x * x
h = @(x) x * x
h(3)
ans = 9
h = @(x) h(x) + 1
h = @(x)h(x)+1
h(3)
ans = 10
基本上,我自己做了一个匿名函数调用。 MATLAB 没有递归地执行操作,而是记住了旧的函数定义。但是,工作区并未将其显示为变量之一,并且句柄似乎也不知道它。
只要我保留新功能,旧功能是否会被存储在幕后?这种结构有什么“陷阱”吗?
【问题讨论】:
-
我会说设计本身就是一个“陷阱”和一个坏主意,因为它非常不直观,并且对其他查看代码的人隐藏了很多东西。