初心者用kotlin

kotlinのメモです。

2981 views

基礎

何はともあれ、配列が使えないとプログラムは書けない。
その割にkotlinは、ちょっと独特な気がする。
とりあえず基本的には以下の感じで使用する。

val data Array<型> = arrayOf(...)

左の方はArrayと書いて、初期化とかデータを突っ込む場合はarrayOfと書く。array「の」データみたいに覚えるとよい。
データを作成するときはオブると覚える。

fun main(args:Array<String>) {
    var data:Array<Int>     /* 型の宣言 */
    data = arrayOf(1,2,3)   /* 型の代入 */

    data.forEach {
        println(it)
    }

    data[0] = 100           /* 値を書き換えてみる */
    data.forEach {
        println(it)
    }

    /*上のコードはこうも書ける */
    var data1 = arrayOf(10, 20, 30)     /* 型は勝手に合わせてくれる */
    data1.forEach {
        println(it)
    }
}

配列でいきなり定義済みの値で初期化とかあんまないよね

大抵は、プログラムの先頭で大きさ確保して、後で値突っ込むよね。

    /* 大体配列に数字を初期化時点で突っ込むことなんてないよね。 */
    var data2 = IntArray(10)
    for(i in 0..9) {
        data2[i] = i*10
    }

ちなみに↑のコード、for文に入る前のdata2の中身は全部0。

疑問 C++のvectorみたいに動的配列のように使えるのか?

+演算子で出来るみたい。11行目。

    /* 大体配列に数字を初期化時点で突っ込むことなんてないよね。 */
    var data2 = IntArray(10)
    for(i in 0..9) {
        data2[i] = i*10
    }
    data2.forEach {
        println(it)
    }

    /* さらに配列を追加してみる */
    data2 += 100
    data2.forEach {
        println(it)
    }

numpyっぽいこともできるみたい

検索したり、重複消したり、平均求めたり

Listもやっとくか

なんか、arrayでもできるんじゃね?って思うところも、近くにmapがいると、listを使ってしまう病。

    var list1 = listOf("aa", "bb", "cc")
    var list2:List<String> = listOf("dd", "ee", "ff")
    var list3:MutableList<String> = mutableListOf("gg", "hh", "ii")
    list1.forEach{
        println(it)
    }

    list2.forEach{
        println(it)
    }

    list3.add("bebebe")     /* リストに追加してみる */
    list3.forEach{
        println(it)
    }

やっぱりこっちもMutableListの宣言とmutableListOfでデータ作成。データ作るときはOfっとけ。addでデータを追加できるのはmutableのときだけっぽい。
ただのListはaddもできないので、配列と何が違うのかがよくわからない。ほんとにわからない。多分使わない。

めっさ使うmap

mapを使わないプログラムをここ最近書いたことがない。
その割に、これだけ覚えておけば何とかなる。

fun main(args:Array<String>) {
    var data:MutableMap<String, String> = mutableMapOf("keydesu" to "value desu", "adesu" to "bdesu")
    data.forEach{
        println(it.key)
        println(it.value)
    }
}

javaにもあるらしいが、すっかり忘れていたSet

リストと似ているけど、重複したデータは持てない。順序の概念がない。え、何に使うの?重複したデータは持てない、はmapで表現できるし、順序の概念がないのもmapで出来るし、え、何に使うの?あ、mapでキーはあるけどvalueがいらない、みたいなデータにはうってつけか。

fun main(args:Array<String>) {
    var setdata: MutableSet<Int> = mutableSetOf()
    for(i in 0 .. 100) {
        /* 全部偶数にして、重複させる */
        setdata.add(i/2)
    }

    setdata.forEach{
        println(it)
    }
}

順序の概念がないというわりに、0~50が一つずつ表示された。
多分削除して追加したら順序狂うだろうなと思って試してみた。試してみたら、やっぱり順序は狂った。

fun main(args:Array<String>) {
        var setdata: MutableSet<Int> = mutableSetOf()
        for(i in 0 .. 100) {
            /* 全部偶数にして、重複させる */
            setdata.add(i/2)
        }

        setdata.forEach{
            println(it)
        }

        setdata.remove(10)
        setdata.add(10)
        setdata.forEach{
            println(it)
        }
}

最後のsetdata.remove(10)で10を削除して次にsetdata.add(10)で戻す。
すると、表示される順番は以下の通り。

0
1
2
3
4
5
6
7
8
9
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
10

10が一番最後になった。知らないと、ハマりそうだな。

Page 2 of 36.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

マッスル

自己紹介

本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。

サイト/ブログ

https://www.osumoi-stdio.com/pyarticle/

ツイッター

@darkimpact0626