PHPerがJavaとKotlinを触ってみた – for文 – 1


こんにちは!はしもとです。

 

前回は、Kotlinについて紹介をしました。
今回から「関数単位」でPHP・Java・Kotlinの違いを見ていきます。

 

初回は「for文」についてです。

 

for文

for文は、繰り返し処理として用いられるプログラミング言語の基本中の基本です。

そんなfor文ですが、言語によって書き方も異なります。

 

PHPでfor文を書いてみた

public function sum($start, $end) {
    $result = 0;

    for ($i = $start; $i <= $end; $i++) {
        $result += $i;
    }

    return $result;
}

JavaやKotlinと違って、関数の引数に型を宣言せず、また戻り値に対しても型を宣言する必要はないです。

 

現在主流のPHP5系では、引数にスカラー型を宣言することは出来ません。

public function sum(int $start, string $end) {}

↑これはそもそもエラーになります。ですが、PHP7からはスカラー型を宣言することが出来るようになりました。

 

では、型が違う場合、どういう現象になるのかを検証してみました。例えば、先のsum関数で、引数を

$start = 'abc';
$end = 10;

とした場合ですが、処理が終了しません。ずっと処理をし続けているようです。
これだけでもPHPは型がゆるいということが判ります。

 

Javaでfor文を書いてみた

public int sum(int start, int end) {
    int result = 0;

    for (int i = start; i <= end; i++) {
        result += i;
    }

    return result;
}

どちらかと言えば、私としてはこっちの書き方がすっきりします。

 

仮に、引数の「start」に対して、String型の文字列を入れようとした場合、実行前でもエラーとして視認できます。
これはデバッグする上で便利だなと触ってみて思いました。

 

※ PHPでも設定次第では、出来るかも知れませんが、
そもそもスカラー型の宣言が出来るようになったPHP7のリリース日が「2015/12/3」なので、まだ私の勉強不足です。

 

Kotlinでfor文を書いてみた

fun sum(start: Int, end: Int): Int {
    var result = 0

    for (i in start..end) {
        result += i
    }

    return result
}

 

「var」とは何者だということが気になりました。

 

調べてみますと「var=変数ですよ」という宣言に用いられます。

ここでは、変数というだけで型というものは指定されていないです。裏ではされているかもですが…

 

つまり、「変数result」は「String」なのか「int」なのか「それ以外」なのか判らないことになっています。

少しPHPっぽいイメージを受けました。

「変数result」に「0」(int型)が入ってくるので、自然と「変数result」は、int型になるようです。

わざわざ型を指定しなくても良いので、これは便利です。

 

なお、明示的にその変数は「int型です」と宣言する場合は、

var result:Int = 0

と書きます。変数の後ろに型を指定するのは、初めてなので違和感があります。

 

ですが、これはiPhoneアプリの開発言語である「Swift」も同様のため、最近の主流なのではないでしょうか。

 

あとforの書き方も気になりました。

 

「もしかしてPHPでも出来るのではないか」と思い実行してみましたが、そもそもIDE上でエラーがでました。

 

Javaではどうなのか?と思い書いてみましたが、同じくエラーとなりました。

 

つまり、for文はKotlin独自の書き方となります。

なお、KotlinにPHPやJavaのようなfor文の書き方を書いた所、エラーになりました。

はしもとのひとりごと

Kotlin推しになるかなと思いきや「今の所、Javaの書き方が好き」になっています。

ただ、ずっとPHPばかり書いていたので、変数に「$」をつけてしまう癖が抜けません。

 

「$」は「変数ですよ」ということでパッと見、分かりやすいのですが…

0

Leave a comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)