是否有办法将几个if语句组合在同一个序列中执行如下:
X = [1 2 3 4; 5 4 6 7; 2 8 9 2];
X
n = length(X(1,:))-1;
for i=1:n,
if length(X(1,:)) == n,
.........
end
if length(X(1,:)) == n-1,
.........
end
if length(X(1,:)) == n-2,
.........
end
end
有什么建议吗?
答案 0 :(得分:1)
根据您提供的代码以及您给予Theodros的评论,我认为这是code smell的情况。换句话说,我预感到您的方法存在更深层次的问题,如果您披露完整问题,我们可能会改进这些问题。
现在,已经说过:如果你想要执行的操作对于每种情况都不同,那么显然,你不能将它们组合成一个语句。如果每个块中有相同过程的多个副本,则可以使用逻辑OR:
if length(X(1,:)) == n || length(X(1,:)) == n-1
...
end
if length(X(1,:)) == n-2 || length(X(1,:)) == n-4
...
end
如果您使用switch
语句,代码将看起来更好(并且稍微快一点),如@TheodrosZelleke建议的那样。结合案例是这样的:
switch length(X(1,:))
case {1 2} %# length == 1 OR length == 2
...
case {3 4} %# length == 3 OR length == 4
...
end