Запись на курсы по HTML, CSS, JavaScript, PHP, Python, фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
1280 of 1310 menu
Бесплатный тренинг по PHP: форматирование строк. Начало 25 сентября. Жми для записи!

Ключевое слово set

Ключевое слово set используется для объявления сеттера свойства. Сеттер - это специальный метод, который вызывается автоматически при каждой попытке установить новое значение свойству. Он позволяет контролировать процесс присваивания значения, добавлять валидацию или выполнять дополнительные действия.

Синтаксис

var <propertyName>: <PropertyType> = <initialValue> set(value) { // логика сеттера field = value // присваивание значения }
var <propertyName>: <PropertyType> get() = // возвращаемое значение set(value) { // логика сеттера field = value }

Пример

Создадим свойство с сеттером, который проверяет, что устанавливаемое значение не отрицательное:

var age: Int = 0 set(value) { if (value >= 0) { field = value } else { println("Error: Age cannot be negative") } }

Проверим работу сеттера:

val person = Person() person.age = 25 println(person.age) person.age = -5 println(person.age)

Результат выполнения кода:

25 Error: Age cannot be negative 25

Пример

Сеттер с модификатором доступа:

var name: String = "" private set

Проверим работу:

val obj = TestClass() obj.name = "John" // Ошибка компиляции: setter is private println(obj.name)

Результат выполнения кода:

Compilation error: Cannot assign to 'name': the setter is private

Пример

Сеттер с дополнительной логикой:

var price: Double = 0.0 set(value) { field = if (value > 1000) value * 0.9 else value println("Price set to: $field") }

Проверим работу:

val product = Product() product.price = 500.0 product.price = 2000.0 println("Final price: ${product.price}")

Результат выполнения кода:

Price set to: 500.0 Price set to: 1800.0 Final price: 1800.0

Пример

Использование параметра сеттера:

var description: String = "" set(newDescription) { field = newDescription.trim().uppercase() }

Проверим работу:

val item = Item() item.description = " hello world " println("'${item.description}'")

Результат выполнения кода:

'HELLO WORLD'

Смотрите также

  • ключевое слово get,
    которое используется для объявления геттера свойства
  • ключевое слово val,
    которое объявляет свойство только для чтения
  • ключевое слово var,
    которое объявляет изменяемое свойство
  • ключевое слово field,
    которое используется для доступа к backing field свойства