Что нельзя делать с абстрактным классом?
Anonymous Quiz
79%
Создать экземпляр
10%
Наследоваться от этого класса
7%
Нельзя переопределить его методы
4%
Нельзя создать больше одного потомка
В чем разница между значением val и константой?
val - это переменная, доступная только для чтения, но не константа: ее можно инициализировать значением переменной (поэтому ее значение не обязательно знать во время компиляции), и если оно объявлено внутри конструкции, которая вызывается повторно (например, функции), оно может принимать различное значение при каждом вызове. Кроме того, он может ссылаться на объект, который является изменяемым. Если у нас есть значение, которое действительно является постоянным (и представляет собой строку или примитивный тип, который известен во время компиляции), мы можем объявить его как фактическую константу. Однако мы можем сделать это только внутри объявления объекта или на верхнем уровне файла.
val - это переменная, доступная только для чтения, но не константа: ее можно инициализировать значением переменной (поэтому ее значение не обязательно знать во время компиляции), и если оно объявлено внутри конструкции, которая вызывается повторно (например, функции), оно может принимать различное значение при каждом вызове. Кроме того, он может ссылаться на объект, который является изменяемым. Если у нас есть значение, которое действительно является постоянным (и представляет собой строку или примитивный тип, который известен во время компиляции), мы можем объявить его как фактическую константу. Однако мы можем сделать это только внутри объявления объекта или на верхнем уровне файла.
val a = 1 //Переменная, доступная только для чтения
const val b = 2 //Константа
Самодостаточный системный подход с применением мультиплатформенного Kotlin
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех, кто уже имеет опыт работы с Kotlin? Поделюсь моим опытом по созданию веб-UI для JVM-микросервиса при помощи Kotlin Multiplatform.
Читать статью
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех, кто уже имеет опыт работы с Kotlin? Поделюсь моим опытом по созданию веб-UI для JVM-микросервиса при помощи Kotlin Multiplatform.
Читать статью
Teletype
Самодостаточный системный подход с применением мультиплатформенного Kotlin
Готов ли мультиплатформенный Kotlin для создания полностековых (веб-)сервисов? Как такая разработка воспринимается с точки зрения тех...
Выберите неверное утверждение об анонимных функциях:
Anonymous Quiz
15%
Имеют собственное расширенное поведение
20%
Могут принимать и возвращать параметры
49%
Имеют собственное имя
16%
Нет правильного варианта
Каким образом вычисляется базовый тип для результата арифметической операции?
Приоритет следующий: Byte < Short < Int < Long < Float < Double. Т.е. если у одного операнда тип Int, у другого Long, переменной с результатом присвоится тип Long.
Приоритет следующий: Byte < Short < Int < Long < Float < Double. Т.е. если у одного операнда тип Int, у другого Long, переменной с результатом присвоится тип Long.
KMongo и неструктурированные данные
Несмотря на то, что MongoDB начало движение в сторону строгости реляционной модели, она по прежнему остается документной БД и предполагает возможность сохранения документов произвольной структуры. И при использовании MongoDB в языках с динамической типизацией (JavaScript, Python) сохранение или генерация объектов не вызывает сложностей, поскольку заранее не требуется определить структуру извлекаемого или сохраняемого объекта. Но как действовать в случае использования драйверов для MongoDB для языков со строгой типизацией?
В этой статье мы разберем приемы для работы с неструктурированными данными, которые позволят сохранить преимущества использования сериализации с механизмами рефлексии для извлечения произвольных документов.
Читать статью
Несмотря на то, что MongoDB начало движение в сторону строгости реляционной модели, она по прежнему остается документной БД и предполагает возможность сохранения документов произвольной структуры. И при использовании MongoDB в языках с динамической типизацией (JavaScript, Python) сохранение или генерация объектов не вызывает сложностей, поскольку заранее не требуется определить структуру извлекаемого или сохраняемого объекта. Но как действовать в случае использования драйверов для MongoDB для языков со строгой типизацией?
В этой статье мы разберем приемы для работы с неструктурированными данными, которые позволят сохранить преимущества использования сериализации с механизмами рефлексии для извлечения произвольных документов.
Читать статью
Teletype
KMongo и неструктурированные данные
Несмотря на то, что MongoDB начало движение в сторону строгости реляционной модели (добавление опциональной схемы данных, join‑запросов...
При создании объекта конструктор вызывается:
Anonymous Quiz
78%
Всегда
10%
Если конструктор указан явно
11%
Если объект создается в первый раз
1%
Никогда не вызывается
Модификатор open в Kotlin — где используется и что даёт?
По умолчанию класс всегда наследуется от Any (аналог Object в Java) и является закрытым (final) (в Java по умолчанию открыты). В этом случае нельзя наследоваться от него. Но мы можем наследоваться от другого конкретного класса, который явно объявлен как open или abstract.Также добавьте модификатор open ко всем свойствам и методам, которые можно переопределять.
По умолчанию класс всегда наследуется от Any (аналог Object в Java) и является закрытым (final) (в Java по умолчанию открыты). В этом случае нельзя наследоваться от него. Но мы можем наследоваться от другого конкретного класса, который явно объявлен как open или abstract.Также добавьте модификатор open ко всем свойствам и методам, которые можно переопределять.
Kotlin. Ключевые слова in и out. А так же что такое ковариантность и контрвариантность
В этой статье речь пойдет про вариантность параметризованных типов в Котлин.
Цель данной статьи дать первичное понимание работы ковариантности и контрвариантности в Котлин. Здесь будет рассмотрено использование ключевых слов in и out в параметризованных типах.
Читать статью
В этой статье речь пойдет про вариантность параметризованных типов в Котлин.
Цель данной статьи дать первичное понимание работы ковариантности и контрвариантности в Котлин. Здесь будет рассмотрено использование ключевых слов in и out в параметризованных типах.
Читать статью
Teletype
Kotlin. Ключевые слова in и out. А так же что такое ковариантность и контрвариантность
Здравствуйте!
Модификатор object в Kotlin — где используется и что даёт?
С его помощью можно реализовать шаблон "Одиночка». Ключевое слово object одновременно объявляет класс и создаёт его экземпляр. Также можно реализовать объект-компаньон, содержащий лишь фабричные методы, а также методы, связанные с классом, но не требующие обращения к его экземпляру. К членам такого объекта можно обращаться просто по имени класса. Ещё можно использовать для записи объекта-выражения в качестве замены анонимного внутреннего класса.
С его помощью можно реализовать шаблон "Одиночка». Ключевое слово object одновременно объявляет класс и создаёт его экземпляр. Также можно реализовать объект-компаньон, содержащий лишь фабричные методы, а также методы, связанные с классом, но не требующие обращения к его экземпляру. К членам такого объекта можно обращаться просто по имени класса. Ещё можно использовать для записи объекта-выражения в качестве замены анонимного внутреннего класса.
Как мы играли в тесты на Groovy и проиграли
В начале у меня будет один вопрос к тебе дорогой читатель. Писал ли ты когда-нибудь unit-тесты на Groovy ? Если ты андроид-разработчик, то вероятность этого крайне мала. И я с таким не сталкивался пока не пришел на проект Альфы. Небольшой дисклеймер: если ты до этого никогда не писал unit-тесты, то этот материал может показаться тебе непонятным.
Давай представим, ты приходишь на проект и видишь тест, как на картинке. Что ты будешь делать дальше?
Читать статью
В начале у меня будет один вопрос к тебе дорогой читатель. Писал ли ты когда-нибудь unit-тесты на Groovy ? Если ты андроид-разработчик, то вероятность этого крайне мала. И я с таким не сталкивался пока не пришел на проект Альфы. Небольшой дисклеймер: если ты до этого никогда не писал unit-тесты, то этот материал может показаться тебе непонятным.
Давай представим, ты приходишь на проект и видишь тест, как на картинке. Что ты будешь делать дальше?
Читать статью
Teletype
Как мы играли в тесты на Groovy и проиграли
В начале у меня будет один вопрос к тебе дорогой читатель. Кодил ли ты когда-нибудь unit тесты на Groovy ? Если твоя профессия...
От чего зависит порядок выполнения функций?
Anonymous Quiz
9%
От порядка деклараций функций
87%
От порядка вызовов функций
2%
От количества аргументов
2%
От типа возвращаемого значения
Является ли List в Kotlin immutable-коллекцией?
Immutable-объект – это объект, состояние которого невозможно изменить после создания.
List в Kotlin не имеет методов для изменения состояния (добавления и удаления элементов), поэтому может показаться что это immutable-коллекция.
На самом деле List – это интерфейс, имеющий read-only доступ. Такой паттерн называется Immutable Interface. За этим интерфейсом может скрываться любая коллекция, например мутабельный ArrayList (пример на картинке).
Immutable-объект – это объект, состояние которого невозможно изменить после создания.
List в Kotlin не имеет методов для изменения состояния (добавления и удаления элементов), поэтому может показаться что это immutable-коллекция.
На самом деле List – это интерфейс, имеющий read-only доступ. Такой паттерн называется Immutable Interface. За этим интерфейсом может скрываться любая коллекция, например мутабельный ArrayList (пример на картинке).
Мой шаблон Android приложения для Pet-проектов
Приветствую всех любителей покодить)
В течение года разработки небольшого приложения я рефакторил код, что-то менял, удалял, добавлял и пришел к интересной комбинации различных практик и решений, которая впоследствии стала шаблоном для собственных Pet-проектов.
Читать статью
Приветствую всех любителей покодить)
В течение года разработки небольшого приложения я рефакторил код, что-то менял, удалял, добавлял и пришел к интересной комбинации различных практик и решений, которая впоследствии стала шаблоном для собственных Pet-проектов.
Читать статью
Teletype
Мой шаблон Android приложения для Pet-проектов
Приветствую всех любителей покодить)
Выберите неверное утверждение:
Anonymous Quiz
12%
Декларация функции начинается с fun
6%
Имя функции – произвольное
71%
Имя функции может содержать пробелы
12%
Имя функции записывается camelCase
Кратко про анонимные классы и объекты, object и companion object
Анонимные классы — это классы, которые явно не объявлены с помощью class, наследуется от заданного класса или реализует заданный интерфейс.
Анонимный класс не всегда является синглтоном. Анонимный класс создается каждый раз при вызове соответствующего конструктора и используется только в контексте, где был создан. При этом каждый экземпляр анонимного класса имеет свое уникальное состояние и может отличаться от других экземпляров того же анонимного класса. В Kotlin анонимный класс создается следующим образом:
Экземпляры анонимных классов называют анонимными объектами, потому что они объявляются выражением, а не именем. Анонимный объект начинается с ключевого слова object.
• можно задавать свойства, функции, блоки инициализации;
• можно наследоваться от других классов и реализовывать интерфейсы;
• нельзя создавать конструкторы (как основные, так и вторичные).
Ключевое слово object позволяет одновременно объявить класс и создать его экземпляр (т.е. объект). При этом применять его можно по-разному:
• object Name — это объявление объекта (оbject declaration), реализация паттерна Singleton;
• companion object — это объект-компаньон внутри класса (также Singleton);
• object — это объект-выражение (анонимный объект/object expression), не Singleton.
Анонимные классы — это классы, которые явно не объявлены с помощью class, наследуется от заданного класса или реализует заданный интерфейс.
Анонимный класс не всегда является синглтоном. Анонимный класс создается каждый раз при вызове соответствующего конструктора и используется только в контексте, где был создан. При этом каждый экземпляр анонимного класса имеет свое уникальное состояние и может отличаться от других экземпляров того же анонимного класса. В Kotlin анонимный класс создается следующим образом:
val obj = object : SuperClassOrInterface() {Объекты анонимных классов полезны для одноразового использования.
// implementation here
}
Экземпляры анонимных классов называют анонимными объектами, потому что они объявляются выражением, а не именем. Анонимный объект начинается с ключевого слова object.
• можно задавать свойства, функции, блоки инициализации;
• можно наследоваться от других классов и реализовывать интерфейсы;
• нельзя создавать конструкторы (как основные, так и вторичные).
Ключевое слово object позволяет одновременно объявить класс и создать его экземпляр (т.е. объект). При этом применять его можно по-разному:
• object Name — это объявление объекта (оbject declaration), реализация паттерна Singleton;
• companion object — это объект-компаньон внутри класса (также Singleton);
• object — это объект-выражение (анонимный объект/object expression), не Singleton.
Расширяем Android Lint
Часто при разработке собственных фреймворков (или для проверки соответствия кода требованиям организации) возникает необходимость реализовать сложные проверки корректности использования в коде приложения. Это может быть реализовано через расширение возможностей линтера, который используется в Android Studio. В этой статье мы рассмотрим общие подходы к созданию таких расширений для Android-приложений и несколько примеров для проверки названий функций и наличия аннотаций.
Читать статью
Часто при разработке собственных фреймворков (или для проверки соответствия кода требованиям организации) возникает необходимость реализовать сложные проверки корректности использования в коде приложения. Это может быть реализовано через расширение возможностей линтера, который используется в Android Studio. В этой статье мы рассмотрим общие подходы к созданию таких расширений для Android-приложений и несколько примеров для проверки названий функций и наличия аннотаций.
Читать статью
Teletype
Расширяем Android Lint
Часто при разработке собственных фреймворков (или для проверки соответствия кода требованиям организации) возникает необходимость...
Анонимную функцию:
Anonymous Quiz
64%
Можно сохранить в переменную
13%
Обязательно нужно сохранить в переменную
11%
Нельзя никуда сохранить
12%
Невозможно сохранить
Объявление объекта (object declaration), object как Singleton
Объявляется объект при помощи ключевого слова object, после которого следует имя объекта.
Файл, содержащий только object представляет из себя Singleton, т.е. будет создан только один экземпляр этого класса. Пример:
Объявляется объект при помощи ключевого слова object, после которого следует имя объекта.
Файл, содержащий только object представляет из себя Singleton, т.е. будет создан только один экземпляр этого класса. Пример:
object One {Можно обращаться к методам и свойствам класса через имя объекта:
val cats = arrayListOf<Cat>()
fun callCat() {
for (cat in cats) {
...
}
}
}
One.cats.add(Cat(...))Инициализация объявления объекта потокобезопасна и выполняется при первом доступе (лениво).
One.callCat()