2017-06-22 45 views
0

我有这样的代码如何改变,如果别的此刻的切换情况下

s=[1 3 4 9 12 16 18 19 20 21]; 
for k=s 
    if k>2 & k<10 
     a(k)=0; 

    else if k>10 & k<20 
      a(k)=1; 
     else a(k)=2; 
     end 
    end 
end 

我想这个使用switch, case语句改写。我怎样才能做到这一点?

+1

为什么? switch语句实际上并不适合在此使用。 – excaza

+0

我可以重写吗? – Shayan

+0

如果'k == 10'会怎么样? – rahnema1

回答

6

根据documentation您可以使用case表达式中的单元格数组。

for k=s 
    switch k 
     case num2cell(3:9) 
      a(k)=0; 
     case num2cell(11:19) 
      a(k)=1; 
     otherwise 
      a(k)=2; 
    end 
end 

但是你常常不想使用if/else或开关/箱,而不是你可以使用索引:

a(s) = 2; 
a(s(s>2 & s<10)) = 0; 
a(s(s>10 & s<20)) = 1; 
相关问题