情報工学部学生による備忘録

1学生の備忘録です。開発したときのことを思い出せるように。

競プロでKotlinはじめました

Kotlinはじめました

Kotlinとは

JVM上で動くヤツですね。Javaと完全な互換性を持ってて、クラスの流用とかできちゃう優れもの。(JVMJava Virtual Machineだったはず)

噂によると、単純なJavaと同じだからウィンドウも普通に出せるし作れるとか…。いずれやってみたいです。

環境の作成

Kotlinって、Android StudioとかIntelliJ IDEAとかのIDEが必要っぽかったんですが、コマンドラインのやつもあるらしいってことでそれを。

github.com

ここのページから、kotlin-compiler-X.X.X.zipってやつ(2017/11/22時点で1.1.60)をDLしてください。展開したらCドライブとか好きな場所に移してPATHを通してあげてください。

PATHの通し方とかは、調べよう。Windows 10から環境変数どっからいじるのかわかりにくくなってるので頑張れ。

ってことで、PATH通したらコマンドラインから$ kotlin -versionとかで確認してみてください。

Kotlinの基礎の基礎だけ

とりあえずハローワールドだけしときますね。他の書き方はQiitaとかでまとまってるんでそちらを見たほうがいいかと。ちなみに、Java互換なんで個人的にはJavaの勉強が必須ですね。標準入力でScannerクラスとか使うにしても使い方はJavaなんで。

fun main(args: Array<String>){
    println("Hello World")
}

こんな感じ。メイン関数はクラスに属さないとか、関数はfunで宣言するとか、セミコロンはいらないとか。

これが、例えば「helloWorld.kt」って言うファイルだったとしましょう。コンパイルはこう。$ kotlinc helloWorld.ktってかんじでkotlincコマンドで。

コンパイルすると「HelloWorldKt.class」ってファイルが生成されます。んで、ここ躓いたんだけど実行に気をつけてください。

$ kotlin HelloWorldKt

だめな例あげます。$ kotlin ./HelloWorldKt.class、まあこれはjavaやってる人だったら違和感あるんでしょうね。僕はjavaやっててもふんふんふーんつって躓いたわけですけども。

これで使い方はOKかな。

標準入出力

これだけやっときましょうか。競プロだと必須スキルですからね。

JavaのScannerクラスを使うとしたら次のようになります。

import java.util.Scanner

fun main(args: Array<String>){
    val scn = Scanner(System.`in`) //Scannerのインスタンスを作成

    val s: String = scn.nextLine()  //入力を行で取得
    val i: Int = Integer.parseInt(s)//Int型に変換

    val j: Int = scn.nextInt()

    println(i + j)
}

こんな感じ、定数はvalで宣言できます。察せ。変数はvar。らしいよ。

System.inだけ注意で、inが予約語?で使われてる関係で上みたいに書かないといけません。

以上で。ちょっと長くなっちゃったけど、なかなか面白いんで皆もやってみよう。

お疲れ様でした。