PHP、Ruby、Salaのif文を一行で書く方法
-
カテゴリ:
- Scala
昔の自分の記事を整理していて「Scala、PHP、Rubyのfor文を一行で書く方法」という記事で、for文を一行にまとめることをしていたのを発見しました。
そういえばそんなことしてたなぁと感傷に浸りつつ、その流れで今度はif文についても1行で記述する方法をまとめたので、ここにメモしておきます。
[PHP]
// 分岐1の通常if文
if ($num == 10) {
echo '10です。';
}
↓↓↓↓
// 分岐1の一行if文
if ($num == 10) echo '10です。';
-----------------------------------------------------
// 分岐2の通常if文
if (is_null($value)) {
echo '空です。';
} else {
echo '空じゃない。';
}
↓↓↓↓
// 分岐2の一行if文
//三項演算子(条件演算子)
echo (is_null($value)) ? '空です。' : '空じゃない。' ;
[Ruby]
# 分岐1の通常if文
if num == 10
puts '10です。'
end
↓↓↓↓
# 分岐1の一行if文
puts '10です。' if num == 10
-----------------------------------------------------
# 分岐2の通常if文
if value.nil?
puts '空です。'
else
puts '空じゃない。'
end
↓↓↓↓
# 分岐2の一行if文
#三項演算子(条件演算子)
puts value.nil? ? '空です。' : '空じゃない。'
rubyではif文の他に、unless文というものがあります。
unlessは条件の評価が逆になるので注意してください。
# 分岐1の通常unless文
unless num != 10
puts '10です。'
end
↓↓↓↓
# 分岐1の一行unless文
puts '10です。' unless num != 10
-----------------------------------------------------
# 分岐2の通常unless文
unless value.nil?
puts '空じゃない。'
else
puts '空です。'
end
↓↓↓↓
# 分岐2の一行unelss文
#三項演算子(条件演算子)
# 2分岐のunless文を一行で書く方法はないです。。。強いて書くと以下の通りになる
puts unless value.nil? ? '空じゃない。' : '空です。'
[Scala]
// 分岐1の通常if文
if (num == 10) {
println("10です。")
}
↓↓↓↓
// 分岐1の一行if文
if (num == 10) println("10です。")
--------------------------------------------
// 分岐2の通常if文
if (value == null) {
println("空です。")
} else{
println("空じゃない。")
}
↓↓↓↓
// 分岐2の一行if文
// Scalaに三項演算子はないようです!!
// しかし無理くり以下のように書くことは可能です
println(if (value == null) "空です。" else "b")
投稿日:2019-02-26
更新日:2019-08-04