【初心者向け】JavaとScalaを同時にマスターしよう!Vol. 10

こんにちは!ぐちです。

ふらっとノリで始めたスキルアップの本企画ですが、早いもので連載10回目になりました。読んでいる参考書でいうとまだ半分も進んでいないんですけどね。。。

一冊やりきるまでに連載何回までいくのでしょうか・・・。笑

まぁそんなことよりも今回ご紹介する内容は条件文などの構文シリーズです!参考書でいくと7章の内容です。

前回のVol.9はこちらからどうぞ。

if文(式)

ほとんどの言語に備わっている条件分岐のひとつのif文ですが、もちろんJavaにもScalaにもあります。プログラム初心者が学ぶひとつめの構文かなと個人的には思っているので、今回の内容は業界に入った若手の頃を思い出してなんだかノスタルジックな気持ちになりました。笑

それではコードを見比べてみましょう!

Java

まずはJavaからですね。実行時にパラメータの文字列が指定されている場合はその文字列を変数に格納するプログラムです。

public class Main {
    public static void main(String[] args) {
        String fileName = "default.txt";
        if(!args[0].isEmpty()) {
            fileName = args[0];
        }
    }
}

シンプルですね。様々な言語でよく使われる形かなと思います。

Scala

続いてScalaのコードですが、まずは前述のJavaと同じように書くことができますので、そちらのサンプルです。

object Main {
    def main(args: Array[String]): Unit = {
        var fileName = "default.txt"
        if(!args.isEmpty)
            fileName = args(0)
    }
}

Javaと同じですね。ただし、ミュータブルな変数が使われているのでScalaマスターの皆様には「ナンセンス!!!」と怒られてしまうかもしれません。笑

Scalaではできるだけ副作用のないコードを書く思想のため、if文も文ではなく式として考えられています。式ということは値を作り出すので、下記のように変数に格納することができます。そうすることによってミュータブルな変数を使わずに前述と同じ処理を行うことができます。

object Main {
    def main(args: Array[String]): Unit = {
        val fileName =
            if(!args.isEmpty) args(0)
            else "default.txt"
    }
}

Scalaで推奨されているようにイミュータブルな変数を使って書くことができました。これはJavaで言うところの三項演算子に似ています。

三項演算子

Scalaにはない構文のひとつに三項演算子というものがJavaにはあります。前述のイミュータブルな変数を用いたScalaの構文のように「式」として条件文を書くことができます。コードは下記のようになります。

public class Main {
    public static void main(String[] args) {
        String fileName =
            !args[0].isEmpty() ?
            fileName = args[0] :
            "default.txt";
    }
}

「条件文 ? 真の値 : 偽の値」というふうに書くことができます。

それぞれの言語の特徴を見ながら学習を進めると理解も早く良い感じですね!(誰も言ってくれないから自分で言うという。。笑)

では今回はこの辺で。