PERSISTENT 声明必须在变量的任何使用之前

Posted

技术标签:

【中文标题】PERSISTENT 声明必须在变量的任何使用之前【英文标题】:The PERSISTENT declaration must precede any use of the variable 【发布时间】:2019-03-01 00:49:05 【问题描述】:

在做 matlab 作业时,我遇到了一个非常奇怪的错误。这是我的代码:

function [z,times] = Divide(x,y)

    persistent times;

    if (y == 0)
        if (isempty(times))
            times = 1;
        else
            times = times + 1;
        end
    end

    z = x/y;
end

运行时,这给了我错误:

Error: File: Divide.m Line: 3 Column: 16
The PERSISTENT declaration must precede any use of the variable times.

这很奇怪,因为它告诉我需要在将变量声明为持久变量之前将其声明为持久变量(!?)。我不知道我在这里做错了什么,所以如果我应该使用一些奇怪的解决方法,请告诉我。

【问题讨论】:

【参考方案1】:

错误消息的意思是:在将其声明为持久变量之前,您已经使用了“时间”。正如您在返回变量中使用“时间”一样。

一种解决方案可能是为“时间”保留两个不同的变量,一个用于持久变量,另一个用于返回变量。

在此处粘贴我的更改以供参考。祝你好运!

function [z,times] = Divide(x,y)
    persistent p_times;

    if (y == 0)
        if (isempty(p_times))
            p_times = 1;
        else
            p_times = p_times + 1;
        end
    end

    times = p_times;
    z = x/y;
end

【讨论】:

优秀的答案!欢迎来到 SO! 哦,呃,我是个白痴。在函数的输出中引用变量需要已经声明它们,这有点奇怪。我对这种语言还不够习惯哈哈

以上是关于PERSISTENT 声明必须在变量的任何使用之前的主要内容,如果未能解决你的问题,请参考以下文章

Matlab中的persistent变量

matlab编程

matlab persistent啥意思

java通用程序设计技巧

MySQL游标简介

MySQL游标简介