いやあ,うっかりしてたわ。
R でセイウチ演算子での代入箇所に複文が書けるって書いていたのに,Julia のこと書かなかったわ。
Julia では,複文は begin 〜 end で囲むので次の様にして,複文を書くことができる。
どんなに複雑な式を何個書いても問題ない。
が,もっとも大事な注意があることを書いてなかったわ。
a = [1,2,3,4,5]
if begin n = length(a); w=20*pi end > 10
println("List is too long ($n elements, expected <= 10)")
else
println("variable n is $n, w = $w")
end
println(n, ", ", w)
List is too long (5 elements, expected <= 10), w = 62.83185307179586
5, 62.83185307179586
おや,5 elements, expected <= 10 になってますよ。
あわてちゃいけない。複文の評価は,最後の文の評価結果なの!!つまり, w > 10 をやったことになってるの。
位置を考えるか,最後に n を置くか。以下のようにする。
if begin n = length(a); w=20*pi; n end > 10
==========
R も同じ。n > 10 をやりたいなら,複文の最後に n を置く。
a = c(1,2,3,4,5)
if ({n = length(a); w = 20*pi; n} > 10) {
cat(sprintf("List is too long (%d elements, expected <= 10), w = %f\n", n, w))
} else {
cat(sprintf("variable n is %d, w = %f\n", n, w))
}
cat(n, w)
variable n is 5, w = 62.831853
> cat(n, w)
5 62.83185
※コメント投稿者のブログIDはブログ作成者のみに通知されます