kotlinのメモです。
3522 views
何はともあれ、配列が使えないとプログラムは書けない。
その割にkotlinは、ちょっと独特な気がする。
とりあえず基本的には以下の感じで使用する。
左の方は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。
+演算子で出来るみたい。11行目。
/* 大体配列に数字を初期化時点で突っ込むことなんてないよね。 */
var data2 = IntArray(10)
for(i in 0..9) {
data2[i] = i*10
}
data2.forEach {
println(it)
}
/* さらに配列を追加してみる */
data2 += 100
data2.forEach {
println(it)
}
なんか、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を使わないプログラムをここ最近書いたことがない。
その割に、これだけ覚えておけば何とかなる。
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)
}
}
リストと似ているけど、重複したデータは持てない。順序の概念がない。え、何に使うの?重複したデータは持てない、は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。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/