Table | Card | RUSMARC | |
Allowed Actions: –
Action 'Read' will be available if you login or access site from another network
Action 'Download' will be available if you login or access site from another network
Group: Anonymous Network: Internet |
Annotation
Тема выпускной квалификационной работы: «Реализация явно типизированных полей в компиляторе языка Kotlin».В настоящей работе рассмотрены проблемы, связанные с использованием шаблона «теневых свойств» (англ. backing properties) при написании исходного кода на языке программирования Kotlin. Данные проблемы являются специфичными для Kotlin, а потому готовых решений не имеют. Был проведен анализ разных вариантов их решения и выбраны самые оптимальные из них. Для выбранных вариантов были разработаны программные прототипы, представляющие собой модификации компилятора языка Kotlin, и позволяющие отказаться от использования шаблона «теневых свойств» с помощью специального синтаксиса.В рамках данной работы предлагается расширить синтаксис свойств в языке программирования Kotlin, позволив разработчику определить хранимый внутри поля объект и его тип явным образом, а также позволить получать доступ к этому полю с помощью специального механизма сужения типа в месте вызова при соблюдении определенных условий. Для остальных ситуаций предлагается способ получить доступ к полю свойства напрямую, а также способ получить доступ к членам класса-делегата для делегированных свойств.
The subject of the graduate qualification work is «Implementing explicit backing fields for the Kotlin compiler».The current work was aimed to review the problems introduced by the backing properties programming pattern, which can be frequently found in Kotlin source code. These problems are Kotlin-specific, and therefore ready-made solutions are unavailable. A number of different approaches to solve them has been reviewed, and the most appropriate solutions have been chosen. For the ones chosen the corresponding prototypes have been developed in forms of the modified Kotlin compiler versions allowing to abandon the backing properties pattern with the help of special syntax.This work suggests extending the Kotlin programming language with the ability to declare the object stored in a property field and its type explicitly, along with a mechanism of use-site type narrowing, available if certain conditions are satisfied. To cover other cases a way of accessing property fields and delegate members directly is suggested.
Document access rights
Network | User group | Action | ||||
---|---|---|---|---|---|---|
ILC SPbPU Local Network | All | |||||
Internet | Authorized users SPbPU | |||||
Internet | Anonymous |
Table of Contents
- Перечень условных обозначений и терминов
- Введение
- Недостатки шаблона теневых свойств
- Специальный синтаксис
- Свойства и поля
- Две декларации
- Дублирование кода
- Бизнес-стратегия
- Запрос пользователей
- Обзор предметной области
- Другие языки программирования
- Swift
- C# и Java
- TypeScript
- Имеющиеся предложения
- Другие языки программирования
- Исследование возможных подходов
- Раскрывающие геттеры
- Геттеры без тела
- Геттеры с альтернативными типами
- Геттеры с большей видимостью
- Тип раскрывающего геттера
- Порядок вызова геттеров
- Ручной вызов раскрывающего геттера
- Сеттер
- Перегрузка свойств
- Проблема ментальной модели
- Предложение пользователя Andylamax
- Предложение пользователя Fádi Hannoun
- Предложение пользователя CharlyLafon37
- Области видимости
- Многоуровневость
- Ментальная модель
- Явное поле и сужение типа
- Явное теневое поле
- Умное сужение типа
- Явный прямой доступ к полю
- Явный прямой доступ к делегату
- Приватные геттеры
- Тип поля
- Раскрывающие геттеры
- Реализация прототипа
- Реализация раскрывающих геттеров
- Подготовка имеющейся кодовой базы
- Обновление механизма разрешения символов
- Реализация явных теневых полей
- Реализация прямого доступа с помощью знака 99993em.5#
- Реализация прямого доступа к полю
- Реализация доступа к делегату
- Изменение приоритета оператора 99993em.5#
- Реализация раскрывающих геттеров
- Заключение
- Перечень используемых источников
- Приложение А. Модификации парсера
- Приложение Б. Построение FirBackingField
- Приложение В. Резолв
- Приложение Г. Чекер типов свойств
- Приложение Д. Сужение типа свойства
Usage statistics
Access count: 25
Last 30 days: 0 Detailed usage statistics |