【问题标题】:When I pass a struct into exist(), can I call it a 'var'?当我将结构传递给exist()时,我可以称它为'var'吗?
【发布时间】:2013-12-10 00:53:07
【问题描述】:

我已经制作了许多我不想总是需要输入的函数,所以其中许多函数的第一行看起来像:

function something = thisIsMyFunction(OptionalStruct)  
   if(exist('OptionalStruct') 
      building on existing struct;  
   else
      build a new struct; 
   end
end

根据文档,当我可以将类型与选项一起传递时,exist() 搜索会更快,因此它只会搜索该类型。我想知道在这种情况下(或曾经)结构是否是变量,我可以说:

if(exist('OptionalStruct', 'var')

【问题讨论】:

  • 你没试过看看吗?
  • @natan 知道任何保证总比尝试并偶然看到它起作用要好。那是针对一般情况的,这里的情况就很清楚了。

标签: matlab function struct exists


【解决方案1】:

您可以使用isstruct 来检查变量是否为结构体。

if(exist('OptionalStruct') 
    if(isstruct(OptionalStruct))
        building on existing struct;  
else
  build a new struct; 
end

【讨论】:

    【解决方案2】:

    在像

    这样的语句中分配的任何内容
    varName = ...;
    

    是一个变量,将使exist('varName', 'var')为真。

    变量持有或引用什么类型的值完全不相关。

    并且,附议 natan 的评论: 与在 SO 上发布此问题相比,测试这样的事情应该花费更少的时间。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 2013-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      相关资源
      最近更新 更多