Kotlin(*´Д`)ハァハァ

Kotlinは、IntelliJ IDEAで有名なJetBrainsさんが作ってるプログラミング言語。

静的に型付けされた言語で、JVM上で実行することができる。 また、JavaScriptへの変換もできる。

何よりも名前がかわゆく、女子力が高まる感じが非常に良い言語である。

Kotlinの動かし方

とりあえず実行するならブラウザで動く Kotlin Web Demo 。 Kotlinお手軽。

ちゃんとやるなら IntelliJ IDEA 。 日本だとお髭のイケメンさんがライセンスの販売代理店をやっている。

でも Yosemite で起動するとJava6が無いと怒られる。 :;(∩´﹏`∩);:

検索するとさっきの代理店のブログが見つかった。→ http://samuraism.com/2014/10/17/2555 無事起動できた!! (`・ω・´)

IntelliJ IDEA → Preferences... → Plugins → Install JetBrains plugin... ボタン → “kotlin”で探してInstall plugin!! IntelliJ IDEA再起動してインストール完了 \(^o^)/

後の細かいところは https://sites.google.com/site/tarokotlin/chap2/sec24 に任せたっ!

Hello World!!

Hello Worldの例。かわゆさある。

package hello

// main関数はパッケージレベルのファンクションで宣言する
fun main(args: Array<String>) {
  println("Hello World!")
}

Classの定義

Classのコンストラクタは1つだけしか定義出来ない (コンストラクタオーバーロードできない)。 プライマリコンストラクタと呼ばれる。 クラスメンバ変数はval(不変)かvar(可変)で宣言する。

class Syobochim() {
  val range = 1..10
}

メソッドはこう書ける。

fun main(args: Array<String>) {
  val syobochim = Syobochim()
  syobochim.say() // 女子力!
}

class Syobochim() {
  fun say() {
    println("女子力!")
  }
}

staticメソッドは無い。 「それはパッケージレベルの関数でいいんでない?」とJetBrainsさんも仰っている。 そして「どーしても必要ならScalaのコンパニオンオブジェクトみたいなclass objectってのがあるよ。」と寛容さを見せるKotlin。 http://kotlinlang.org/docs/reference/classes.html#class-objects

publicとかprivateは4種類ある.

private
同一スコープからしか見えない
protected
private+子クラスからしか見えない
internal
これがデフォルト 同じモジュールの中からは見える
public
どこからでも見える

高階関数

Kotlinでは高階関数が使える。

fun Syobochim.templeatePattern(f : (Int) -> Unit) {
  for(i in this.range) {
    f(i)
  }
}

使用例。

fun main(args : Array<String>) {
  val syobo = Syobochim()
  syobo.templeatePattern {
    println("財布ない!")
  }
}

KotlinからJavaを使う

そのままJavaのクラスがimportできる。

import java.util.ArrayList

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

fun listSample() {
    val list = ArrayList<Int>()

    list.add(0)
    list.add(1)
    list.add(2)

    for (i in list) {
        println("number is $i")
    }
}

JavaからKotlinを使う

KotlinはJVM言語なのでbytecodeになってしまえばJavaから呼べる。