4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

if文の書き方のまとめ(Scala、Java、Rust、C言語、C++、Go言語、PHP、Perl、Python、Ruby)

Last updated at Posted at 2019-11-22

いろんな言語を触っていると、言語の重要な特徴はともかく、細かい文法や記号の使い方などがだんだんごっちゃになってきてしまいます。あれ、これってこの言語だとどう書くんだっけ?ってなることがよくあります。前はよく使っていた言語なのに、ちょっと離れただけでもう忘れてしまった、とショックに感じることもあります。なので、こういうメモを作っていこうと思います。

Scala

if (x >= 30) {
    ...
} else if (x >= 0) {
    ...
} else {
    ...
}

// 文ではなく式
val max = if (a > b) a else b
  • 条件式は論理値であることが必要
  • C言語と同様に{ }の中の式が1つの場合は{ }を省略可能 (dangling else問題あり)
  • 文ではなく式

※厳密には、上記例での{ ... }の箇所は式を1つ置けるのであって、中かっこはif式の仕様ではなくブロック式の構文の一部です。ブロック式以外の式を置けば、C言語でいう中かっこが省略されたのと同じ見た目になります。

Conditional Expressions - Expressions | Scala 2.13

Java

if (x >= 30) {
    ...;
} else if (x >= 0) {
    ...;
} else {
    ...;
}
  • 条件式は論理値であることが必要
  • C言語と同様に{ }の中の文が1つの場合は{ }を省略可能 (dangling else問題あり)

The if Statement - Java Language Specification

Rust

if x >= 30 {
    ...
} else if x >= 0 {
    ...
} else {
    ...
}

// 文ではなく式
let max = if a > b { a } else { b };
  • 条件式は論理値であることが必要
  • C言語と違って{ }は省略できない
  • 文ではなく式

if Expressions - Control Flow - The Rust Programming Language

C言語、C++

if (x >= 30) {
    ...;
} else if (x >= 0) {
    ...;
} else {
    ...;
}

// { } の中の文が1つの場合は { } を省略可
if (x >= 30)
    ...;
else if (x >= 0)
    ...;
else
    ...;
  • 条件式は型によって適切に真か偽に解釈される
  • { }の中の文が1つの場合は{ }を省略可能 (dangling else問題あり)

Go言語

if x >= 30 {
    ...
} else if x >= 0 {
    ...
} else {
    ...
}

// こういうのも可能
if x := f(); x >= 0 {
    ...
}
  • 条件式は論理値であることが必要
  • C言語と違って{ }は省略できない

If statements - The Go Programming Language Specification - The Go Programming Language

PHP

if ($x >= 30) {
    ...;
} else if ($x >= 0) {
    ...;
} elseif ($x >= 0) { // else if でも elseif でもOK
    ...;
} else {
    ...;
}

// 別の構文
if ($x >= 30):
    ...;
elseif ($x >= 0): // else if は不可
    ...;
else:
    ...;
endif;
  • 条件式は型によって適切に真か偽に解釈される
  • 1つ目の構文ではC言語と同様に{ }の中の文が1つの場合は{ }を省略可能 (dangling else問題あり)

PHP: if - Manual
PHP: 制御構造に関する別の構文 - Manual

Perl

if ($x >= 30) {
    ...;
} elsif ($x >= 0) {
    ...;
} else {
    ...;
}

# 反対
unless ($x >= 0) {
    ...;
}

# 文修飾子(後置のif構文)
... if $x >= 0;
... unless $x >= 0;
  • 条件式は型によって適切に真か偽に解釈される
  • C言語と違って{ }は省略できない

複合文 - perlsyn - Perl の文法 - perldoc.jp
文修飾子 - perlsyn - Perl の文法 - perldoc.jp

Python

if x >= 30:
    ...
elif x >= 0:
    ...
else:
    ...
  • 条件式は型によって適切に真か偽に解釈される
  • インデント!

if Statements - More Control Flow Tools — Python 3.8.0 documentation

Ruby


if x >= 30
  ...
elsif x >= 0
  ...
else
  ...
end

# 反対
unless x >= 0
  ...
end

# 文ではなく式
max = if a > b then a else b end

# if修飾子(後置のif構文)
... if x >= 0
... unless x >= 0
  • 条件式は型によって適切に真か偽に解釈される
  • 文ではなく式
  • ifelsifの最後はthenを書くが改行が続く場合は省略可

条件分岐 - 制御構造 (Ruby 2.6.0)

4
3
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?