2022年
3月
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

setup diary

2007|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|06|08|11|
2015|01|02|03|04|05|06|07|08|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|

2022-03-28 Rとjuliaとrubyとpython

_ フロー制御

4つの言語の比較の第三弾として,プログラムのフロー制御について,表にまとめてみた.
Rjuliarubypython3
if a<-3
if(a==1){cat(1)
}else if(a==2){cat(2)
}else{cat(3)}
a=3
if a==1 print(1)
elseif a==2 print(2)
else print(3)
end
a=3
if a==1 then p 1
elsif a==2 then p 2
else p 3
end
a=3
if a==1:print(1)
elif a==2:print(2)
else:print(3)
三項演算子 a<-2
cat(ifelse(a>0,"+","-"))
a=2
print(a>0 ? "+" : "-")
a=2
print(a>0?"+":"-")
a=2
print('+' if a>0 else '-')
switch i<-"a"
cat(switch(i,a=1,b=2))
i="a"
p case i
when "a" then 1
when "b" then 2
end
for for(i in 1:10){cat(i);cat("\n")} for i=1:10 println(i) end for i in 1..10 do p i end for i in range(1,11):print(i)
while i<-0
while(i<10){cat(i<-i+1);cat("\n")}
let i=0
while i<10 println(i+=1) end
end
i=0
while i<10 do p i+=1 end
i=0
while i<10:i+=1;print(i)
無限ループ repeat{cat(1);cat("\n")} while true println(1) end loop{p 1} while True:print(1)
ループを抜ける break break break break
次のループ next continue continue next
例外処理 tryCatch(cat("1"/0),
error=function(e)cat(-1))
try print("1"/0)
catch
print(-1)
end
begin
p "1"/0
rescue
p -1
end
try:print("1"/0)
except:print(-1)
終了処理 tryCatch({cat(1);cat("\n")},
finally=cat(2))
try println(1)
finally
println(2)
end
begin
p 1
ensure
p 2
end
try:print(1)
finally:print(2)
複文 a<-{cat(1);2} a=(print(1);2) a=(p 1;2)
いくつか,感想を羅列する.juliaとpythonはswitch文に相当する命令が無いので,if文などで書き下す必要がある.pythonは,ループなどの終了の記号が無いので,すっきりして感じられる.juliaの三項演算子はスペースが無いとエラーが出るのが面倒.python以外は値が返ってくるので,分かりやすい.フロー制御については,それぞれクセはあるけれど,どれが使いやすいか,甲乙つけ難しという感じでしょうか.