【发布时间】:2018-04-10 04:39:24
【问题描述】:
在 Matlab 中,可以使用 eval 函数将任意字符串计算为代码。例如
s = '{1, 2, ''hello''}' % char
c = eval(s) % cell
有没有办法做逆运算;获取任意变量的文字字符串表示?即从c恢复s?
类似的东西
s = repr(c)
这样的repr 函数是内置在 Python 中的,但我在 Matlab 中没有遇到过类似的东西,也没有看到如何自己实现它的明确方法。
我所知道的最接近的东西是disp(c),它打印出c 的表示,但以“可读”格式而不是文字代码格式。
【问题讨论】:
-
我不认为你可以在matlab中以这种方式这样做,也许以其他方式。由于口头禅函数是一等公民,你可以在Python中做到这一点。这不是 matlab 的情况。
-
为什么这是一个限制因素?
-
那么你不能将一个函数作为参数插入另一个函数。例如,您可以使用
functions()函数来处理函数句柄。 -
我不想使用函数作为参数。我只是希望
repr(eval(s)) == s成为true对于任何代表文字的eval'able 字符串s。 -
让我改写一下:假设存在这样的功能,称之为
matrepr。您将无法将参数传递为matrepr(cos)或matrepr(inv)。例如你可以做func2str(@cos)
标签: python string matlab eval repr