Переменные Kotlin: понимание разницы между var и val

В Kotlin переменные играют решающую роль в хранении данных и манипулировании ими. При объявлении переменной у вас есть два варианта: var и val. Хотя на первый взгляд они могут показаться похожими, между этими двумя ключевыми словами существуют фундаментальные различия. В этой статье мы рассмотрим различия между var и val, предоставим примеры кода и обсудим их практическое применение.

Понимание var:
Ключевое слово var является сокращением от слова «переменная» и используется для объявления изменяемых переменных. Mutable означает, что значение, присвоенное переменной, может быть изменено после ее инициализации. Вот пример:

var count = 0
count = 1 // Valid: Changing the value of a mutable variable

В приведенном выше фрагменте кода мы объявляем переменную с именем countи присваиваем ей начальное значение 0. Поскольку она изменяема, позже мы можем присвоить новое значение, например 1.

Понимание значения val:
Ключевое слово val является сокращением от «значение» и используется для объявления неизменяемых переменных. Неизменяемость означает, что после присвоения переменной значения ее нельзя изменить. Давайте рассмотрим пример:

val pi = 3.14159
pi = 3.14 // Error: Cannot assign a new value to an immutable variable

В приведенном выше коде мы объявляем переменную с именем piи присваиваем ей значение 3,14159. Поскольку он неизменяем, любая попытка присвоить ему новое значение приведет к ошибке компиляции.

Выбор между var и val:
При принятии решения об использовании var или val учитывайте следующие рекомендации:

  1. Используйте var, если вам нужна переменная, значение которой может меняться со временем.
  2. Используйте val, когда вам нужна константа или значение, которое не должно меняться после инициализации.
  3. Использование val приветствуется, когда это возможно, поскольку оно способствует неизменности, что может привести к более предсказуемому и безошибочному коду.

Практические примеры.
Давайте рассмотрим несколько сценариев, в которых выбор между var и val становится более очевидным:

  1. Хранение пользовательского ввода:
    Если вы хотите сохранить пользовательский ввод, который можно будет обновить, используйте var. Например:

    var username = "JohnDoe"
    username = "JaneSmith" // Allowing the user to update their username
  2. Математические константы.
    При объявлении математических констант, таких как pi или e, которые не должны изменяться, используйте val. Например:

    val pi = 3.14159
    val e = 2.71828
  3. Перебор списка.
    При переборе списка, когда вам не нужно изменять переменную цикла, используйте val. Например:

    val numbers = listOf(1, 2, 3, 4, 5)
    for (number in numbers) {
       // Your code here
    }