Kotlinコードを簡単に見てみる

プログラムの開始点

すでに前でも紹介したHello Worldプログラムから見ていこう。Kotlinの基本文法はJavaと同じくmain()関数から始まる。main関数はクラスに属さず、パッケージの直下に置く必要がある。パッケージ名はJavaと同じように、ドメイン名を逆順にし、ドット(.)で区切るスタイルである。

Kotlinのソースコードの拡張子には.kt.ktsを使用する。.ktファイルはKotlinコンパイラーでコンパイルされるもので、.ktsファイルはKotlinスクリプティングサポートによって実行される。

Hello World!

Hello, world!を出力するプログラムは次のとおりである。HelloWorld.ktファイルには.kt拡張子を付ける。

package com.devkuma.sample

fun main() {
    println("Hello, world!")
}

Output:

Hello, world!!!

実際に実行するには、KotlinコンパイラーまたはIntelliJ IDEA(+ Kotlinプラグイン)を使用する。簡単に実行したい場合は、Kotlin PlaygroundでWebブラウザーからKotlinコードを編集して実行してもよい。

mainコマンド引数

上ではmain関数の引数を省略したが、引数としてargs: Array<String>のように入れることができる。

argsArray<String>を見れば分かるように文字列配列なので、複数の値を文字列パラメーターとして受け取ることができ、args[0]で最初のパラメーターを取得できる。
パラメーターがない場合にargs[0]へアクセスするとArrayIndexOutOfBoundsException例外が発生するが、contentToString()メソッドを使用すればこれを防げる。このメソッドは、パラメーターがない場合に空配列([])を表示する。

fun main(args: Array<String>) {
    //println("program arguments: ${args[0]}");
    println("Program arguments: ${args.contentToString()}")
}

Output:

Hello World!
Program arguments: []

コメント

コメントには1行コメントと複数行コメントがある。

fun main(args:Array<String>){
    // 1行コメント
    /*
      複数行コメント
    */
}

行末のセミコロン

行末のセミコロン(;)は省略できる。付けても問題ないが、省略されることが多い。

println( "Hello!")
println( "Hello!");

コーディング規則

次のようなコーディング規則がある。

  • 変数名と関数名にはcamel caseを使用する(例: createObject)。
  • データ型、クラス名は大文字で始める(例: String)。
  • 関数名やプロパティ名は小文字で始める(例: marginWidth)。
  • インデントには4つのスペースを使用する。
  • public関数はKotlin Docドキュメント(KDoc)を参考にする。

文字列宣言

// 文字列宣言
val hoge = "aiueo"

// 型宣言も可能
val hoge : String = "aiueo"

// 数値宣言
val number = 1

データ型の宣言は明示的に行うこともあるが、宣言がなくても推論できる場合は省略できる。

文字列テンプレート

StringTemplate.kt

class Test {
    fun printStr():String{
        return "test"
    }
}

fun main(args:Array<String>) {
    val num1 = 34
    println("num is $num1")
    val test = Test()
    println("test function ${test.printStr()}")
}

println()関数では、文字列内で$記号を明示するだけで変数をそのまま使用できる。

標準出力print、println

PrintTutorial.kt

fun main(args: Array<String>) {
    print("한줄 출력")
    print("입니다. \n")

    println("자동으로 줄바꿈 해줍니다.")

    print("그래서 저는 여기에 표시됩니다.")
}

Output:

한줄 출력입니다. 
자동으로 줄바꿈 해줍니다.
그래서 저는 여기에 표시됩니다.

print()メソッドは1行に連続して出力され、println()は自動で改行する。
print()メソッドの最後の文字列に改行文字(\n)を入れると、println()を呼び出したように改行される。

キーワード

// Hard keywords 
as (cast)     as (import) as?           break 
class         continue     do           else 
false         for          fun          if 
in            !in          interface    is 
!is           null         object       package 
return        super        this         throw 
true          try          typealias    typeof
val           var          when         while 

// Soft keywords 
by            catch        constructor  delegate
dynamic       field        file         finally 
get           import       init         param 
property      receiver     set          setparam
where 

// Modifier keywords 
actual        abstract     annotation   companion 
const         crossinline  data         enum 
expect        external     final        infix 
inline        inner        internal     lateinit 
noinline      open         operator     out
override      private      protected    public 
reified       sealed       suspend      tailrec
vararg 

// Special identifiers 
field         it