💡
Nim-lang 3項演算子はないけどifが値を持っているのでそれで代替できる
nimには3項演算子はないが、if全体が値を返せるのでそれでやっていける。
※小生は、三項演算子の推奨派である。
コードで語る
var fp: FilePermission =
if data.st_uid == posix.getuid():
fpUserRead
else:
if data.st_gid == posix.getgid():
fpGroupRead
else:
fpOthersRead;
ちなみにちゃんとインデントしないと怒られる。
ご覧の有様なので、3項演算子的記述によるコード量のメリットはまるでない。
関数のresultを創る時用の便利機能だと思ったほうが良さそう。
template/macroで書いてる人も要る
nimではtemplate/macroにより、構文拡張が容易なので、演算子を増やしてる人もいる。
これらを使えば、違和感なく手軽に書けるだろう。
Discussion
Nim では else-if ではなく
elif
が推奨されます.以下のように書けばインデントは不要です.
ワンライナーが読みにくい場合は次のように書くのも良いかもしれません.
ご参考までに.