Как установить стоимость недвижимости в Котлине

Я попытался установить значение свойства, как в следующем фрагменте. Этот вопрос SO не отвечает на вопрос.

var person = Person("john", 24) //sample_text.text = person.getName() + person.getAge() var kon = person.someProperty person.someProperty = "crap" //this doesn't allow me to set value kon = "manulilated" //this allows me to set the value sample_text.text = kon class Person(val n: String, val a: Int){ var pname: String = n var page: Int = a var someProperty: String = "defaultValue" get() = field.capitalize() private set(value){field = value} fun Init(nm: String, ag: Int){ pname = nm page = ag } fun getAge(): Int{ return page } fun getName(): String{ return pname } } 

Почему мне удалось установить значение класса Person во второй строке, но не в первой строке?

Во-первых, ваш private модификатор – ваша проблема.

+ Изменить

 private set(value){field = value} 

к

 set(value){field = value} //public by default 

В противном случае вы не можете использовать setter вне класса. Читайте здесь .

Для участников, объявленных внутри класса: частные средства видимы внутри этого класса (включая все его члены);

Во-вторых, вы что-то недопонимаете:

  var kon = person.someProperty kon = "manulilated" 

В этих строках вы не меняете свойство в объекте. После создания переменной kon , являющейся String указывающей на someProperty , вы переназначаете эту локальную переменную на что-то другое. Это переназначение не соответствует изменению стоимости person.someProperty ! Это абсолютно не влияет на объект.

someProperty есть частный сеттер. Вы не можете установить его вне класса, когда сеттер является приватным

Intereting Posts
Уведомления Android не отображаются на эмуляторе, запущенном API 27 Я хочу, чтобы каждый элемент массива каждого массива отображался в виде единого кадра Чистая архитектура приложений для Android: если на уровне данных есть свои классы моделей? Есть ли какой-либо примерный рабочий код для создания предварительно подписанных URL S3 в Котлине Lazy переменная с сбросом Логика загрузки Endless RecyclerView несовместима на всех устройствах Тесты инструментария не удалось из-за NoClassDefFoundError Ошибка преобразования байт-кода – DexException-Firebase Auth Как выполнить некоторый код, когда gradle строит тесты Синтетическое расширение Kotlin и несколько включают в себя одну и ту же компоновку ActivityTestRule.getActivity возвращает значение null в методе Before Идиоматический способ пролитой последовательности в три списка с использованием Kotlin Handy подтвердить диалог javafx в kotlin Конфигурация Джерси CORS для разрешения ответов с сервера Kotlin и DynamoDBMapper SaveBehavior