0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Kotlinのユーザー定義型

Posted at

Kotlinでユーザー定義型の列挙型と構造体のメリットをメモします。

fun main() {
    val meetingPlace = 4

    when (meetingPlace) {
        1 -> {
            println("警察署")
        }
        2 -> {
            println("消防署")
        }
        3 -> {
            println("病院")
        }
    }
}

まず、集合場所(meetingPlace)を数値で指定した時、上記のコードでは1、2、3が何を表しているのか分かりにくく、それ以外の数値が入った場合にはエラーとなってしまいます。

enum class PublicServices { POLICESTATION, FIREDEPARTMENT, HOSPITAL }

fun main() {
    val meetingPlace: PublicServices
    meetingPlace = PublicServices.HOSPITAL

    when (meetingPlace) {
        PublicServices.POLICESTATION -> {
            println("警察署")
        }
        PublicServices.FIREDEPARTMENT -> {
            println("消防署")
        }
        PublicServices.HOSPITAL -> {
            println("病院")
        }
    }
}

そこで列挙型PublicServicesを作成し、meetingPlaceに型を指定すれば、それ以外の値が入ることは無くなり、コードを読むだけで何の処理なのかを理解できます。

次は構造体のメリットです。

fun main() {
    val classes = "勇者"
    val hitPoints = 10
    val magicPoints = 13
    val attack = 8.0
    val defence = 7.0
    val agility = 6.0

    val classes2 = "戦士"
    val hitPoints2 = 15
    val magicPoints2 = 3
    val attack2 = 9.0
    val defence2 = 7.5
    val agility2 = 4.0

    val classes3 = "僧侶"
    val hitPoints3 = 8
    val magicPoints3 = 20
    val attack3 = 7.0
    val defence3 = 6.5
    val agility3 = 5.5
    // 処理が続く
}

ゲームでプレイヤーのステータスを設定する時、そのまま書くとキャラとそのステータスを登録した人数分だけ変数定義します。これだと変数classes2magicPoints3が何を表しているのか分かりにくいし、処理が複雑になるほど変数の管理が大変になり記述ミスやエラーが起こりやすくなってしまいます。

data class Character(
    val classes: String,
    val hitPoints: Int,
    val magicPoints: Int,
    val attack: Double,
    val defence: Double,
    val agility: Double
)
fun main() {
    val hero = Character("勇者", 10, 13, 8.0, 7.0, 6.0)
    val warrior = Character("戦士", 15, 3, 9.0, 7.5, 4.0)
    val priest = Character("僧侶", 8, 20, 7.0, 6.5, 5.5)
    // 処理が続く
}

構造体Character作成すれば、変数は登録キャラの人数分だけで済みます。これにより記述ミスが減り、エラーが起こりにくくなり可読性も上がります。

参照

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?