【问题标题】:Check if caller == base workspace in MATLAB检查调用者是否 == MATLAB 中的基本工作区
【发布时间】:2011-12-07 19:53:08
【问题描述】:

有没有一种很好的方法来检查 caller 工作区是否实际上是 base 工作区?

我想我可以轻松地使用 assigninevalin 函数在 base 工作区中分配某些内容,然后检查该变量是否已更改或在 caller 中分配> 工作区,但这似乎是一种 hack。

【问题讨论】:

    标签: matlab


    【解决方案1】:

    使用DBSTACK

    %# true if the function has been called from base
    callerIsBaseWorkspace = length(dbstack) == 1; 
    

    【讨论】:

    • 在生产代码中是这样完成的吗?使用调试功能似乎很麻烦:)
    • @Juhl:在 Matlab 中,您不会“在调试与发布模式下编译”。
    • 是的,我知道,但前缀 db 对我来说似乎不合适,但无论如何我正在做的事情是一种 hack :)
    • @Juhl:我知道你的意思。无论如何,帮助特别提示了调试之外的用法,所以你不应该感到太糟糕。
    • Jhul,你是对的 - 有点像黑客。但是试图弄清楚你在哪个堆栈帧,并弄清楚它是否是最顶层的帧?你的手已经脏了 - 去吧 :-) 更有趣的是你为什么要弄清楚这个!
    猜你喜欢
    • 2013-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 1970-01-01
    • 2017-07-11
    • 2020-02-15
    相关资源
    最近更新 更多