语法[x, y] = X
,将X(1)
分配给x
和X(2)
分配给y
,绝对可以在Scilab中使用,例如:
[p, q] = cdfnor("PQ", 0, 0, 1)
但如果我尝试一下,我会得到一个"不兼容的分配"错误:
a = [0, 1]
[x, y] = a
Incompatible assignation: trying to assign 1 values in 2 variables.
如何在我自己的代码中复制此行为?
答案 0 :(得分:3)
Scilab具有元组赋值,例如[x, y] = (0, 1)
。这有点接近你想要的,但是这个括号语法似乎不对应于任何Scilab数据结构(我用 list 尝试了这个,但没有成功)。
所以看起来需要一个具有可变数量的输出变量(varargout)的函数,它接受一个向量并返回一个变量列表。似乎没有内置的方法将矢量转换为列表,所以我使用了一个循环。该函数名为deal
,因为它与Matlab's deal
function相似。
function varargout = deal(a)
varargout = list()
for i = 1:length(a)
varargout(i) = a(i)
end
endfunction
a = [0, 1]
[x, y] = deal(a)