始めに(注意書き)

これは自分が思う普段使いするKotolinのプログラム記述のまとめです。自分がわかることしか重視して書いていないので、間違っている点または理解しにくい記述があると思われます。勉強中なので随時更新していきます。

プログラム

  • 整数を指定の数値未満でランダムに生成
    Rondom()nextInt(指定する数値) : import java.util.*をimportする必要あり
  • 変数 = if (条件) @@@(trueの時の変数) else @@@(falseの時の変数) : 条件分岐による代入
  • when式は最初の条件が適用される。また値を返却するときは "条件" -> "変数"のみで通じる(変数を宣言してそれをreturnしてもよい)
  • default値の宣言 : 関数の引数が渡されていない場合に使用する仮の引数(default value)の宣言の仕方 => fun 関数名(引数名: 型 = "default value"){}
  • list名.filter{条件} :条件に当てはまるlistの要素を抽出してlistとして返却する。
    注意 : eager と lazy 評価 => .asSequence().filterとすると0番目の要素から順に実行されるので要件を満たしたら終了するプログラムを作りたかったらこれを使うと効率的。(参照: KotlinのListとSequenceって何が違うの?)
  • 関数を引数として渡すとき : fun 関数名( ::引数関数){引数関数(渡す引数)}
  • 末尾再起 :Kotlin文法 - 関数とラムダ
  • ラムダ式 : { 式 }
  • 高階級関数: fun 関数名(::関数, {ラムダ式})
    fun 関数名(引数){ラムダ式}
  • クラスの作り方 :
    class クラス名(要素1: 型 = デフォルト値, 要素2: 型 = デフォルト値, 要素3: 型 = デフォルト値) {
        var 要素1: 型 = 要素1
        var 要素2: 型 = 要素2
        var 要素3: 型 = 要素3
    }
    class クラス名(var 要素1: 型 = デフォルト値, var 要素2: 型 = デフォルト値, var 要素3: 型 = デフォルト値) {
        init {
        }
        ...
    }

    引数みたいな部分をプライマリーコンストラクターという
    init{}は初期化ブロックという

  • コンストラクターの使い分け : (参照 : Kotlin - コンストラクタ)
    インスタンス生成時の引数によってコンストラクターを分岐させたいときは

    class クラス名 {
        constructor(引数){ //セカンダリコンストラクターという
            処理
        }
        constructor(引数){
            処理
        }
    }
  • 継承してコンストラクターを使いたいとき
    open class クラス名1 { //openをつけることで子クラスがextendsをすることを許可している
        constructor(引数1){
            処理
        }
        constructor(引数1, 引数2){
            処理
        }
    }
    
    class クラス名2: クラス名1{
        constructor(引数1): super(引数1){
            処理
        }
        constructor(引数1, 引数2) : this(引数1, 引数2){
            処理
        }
        //this()またはsuper()で親クラスのコンストラクターを使用
    }
  • getter/setter : var 変数: 型 get() = 式等 set() = 式等 と書けばいいらしい(未確認)
  • メンバへのアクセス制限 : public(デフォルト), private, protected, internal
    特定のgetterやsetterのみに private get(), private set()とすることもできる
  • 抽象クラス(スーパークラス) :
    abstract class 親クラス名 (コンストラクターも可){
    abstract var 変数名
    }
    class サブクラス名: 親クラス名() {//サブクラス
    override var 変数名
    }
  • インターフェース : コンストラクターは持てない
    interface インターフェース名 {
    fun 関数名()
    }
    class サブクラス名: インターフェース名 {
    override fun 関数名
    }
  • object :
    object object名 : 参照元{
    }
    class クラス名: オブジェクトの参照元 by object名 {
    }
  • オブジェクトクラス : staticメンバを宣言する
    class クラス名 private() { //コンストラクターをprivate化し呼べなくする
        class object {
            fun インスタンス化関数() = クラス名()
            //ここからインスタンス化させる。またクラス内なのでprivateコンストラクターを呼び出せる
        }
    }
    //インスタンス生成
    val インスタンス名 = クラス名.インスタンス化関数()
  • Singleton(シングルトン) : 指し示すインスタンスを一つのみにする方法(参考: Kotlin - シングルトン)
  • dataクラス : (参考: プログラマー向けKotlin Bootcamp 4:オブジェクト指向プログラミング 9.タスク:データクラスを作成する)
    data class dataclass名 (変数){
    }
    val 変数 = dataclass名("値")
    println(変数, datacass名.変数)
    val x = dataclass名(A, B, C)
    val (N, M, L) = x
    val (X, _, Z) = x// _でスキップ可能
    println(N)
    println(M)
    println(L)
  • 等式 :
    参照先が等しいか : ===
    値が等しいか : ==
    オブジェクトの値が等しいか : equals or ==(dataclassの場合に限る)
  • sealed class :(参考: Kotlinのsealed classを使いこなす)

終わりに

ここまでお疲れさまでした。まだKotlinについては学習中ですのでこのページは今後変更、更新されていきます。また自分が解釈しやすいように書いてあるので事実とは少し違う可能性があることをご了承ください。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です