LINUX.ORG.RU

Что за собаки в Kotlin?

 


0

1

Сунулся я тут изучить kotlin. Поставил Android Studio, загрузил проект из примеров. В примере некоторые строки начинаются с @, и я никак не соображу что это такое:

@Dao
interface PlantDao {
    @Query("SELECT * FROM plants ORDER BY name")
    fun getPlants(): Flow<List<Plant>>

    @Query("SELECT * FROM plants WHERE growZoneNumber = :growZoneNumber ORDER BY name")
    fun getPlantsWithGrowZoneNumber(growZoneNumber: Int): Flow<List<Plant>>

    @Query("SELECT * FROM plants WHERE id = :plantId")
    fun getPlant(plantId: String): Flow<Plant>

    @Insert(onConflict = OnConflictStrategy.REPLACE)
    suspend fun insertAll(plants: List<Plant>)
}

https://drive.google.com/file/d/11Ieuk6y5LJ4uoScVl5PR50IqyYUrxaHT/view?usp=sh...

Здесь @Dao, @Query, @Insert - что это за конструкции?

Ответ на: комментарий от victor79

Много что позаимствовано из. Да и работает на основе той же JVM (Native пока что не в счёт, возможности несоизмеримы). Фактически, паразитирует на экосистеме Java, переиспользуя библиотеки, но при этом привносит что-то своё, родителю недоступное. C++ way.

Result-Code ()
Ответ на: комментарий от Result-Code

А мне Kotlin по началу Pascal/Delphi напомнил. Там так же было var abc: String;

Зато не будет перекоса в сторону джавы… Оно же когда переходишь с одной системы на другую существенно подобную, то пытаешься делать так как делал в прошлой.

victor79 ()
Ответ на: комментарий от seiken

Только в паскале нет вывода типов, и их надо всегда декларировать.

В последних Delphi это появилось, как и объявления переменных в произвольном месте. Незнаю насколько там все доделано, но судя по описанию есть:

http://docwiki.embarcadero.com/RADStudio/Sydney/en/Inline_Variable_Declaration

Еще в паскале self это ссылка как и в Kotlin this, а в c++ this это указатель.

victor79 ()
Ответ на: комментарий от rumgot

Ну так в этом ничего плохого нет. Присосаться как клещ, высосать 90% программистов, диктовать моду следующие 30 лет. В общем то, я не думаю, что JetBrains смогут облажаться в этом, у них хорошие инструменты, удобная инфраструктура. Да, есть минусы, но у всех языков есть свои минусы, и Kotlin тут смотрится выигрышнее Java, хоть и есть некоторые вещи, которые лично мне не нравятся (например, импорты с some.*;).

Result-Code ()
Ответ на: комментарий от rumgot

В слове «паразитирует» нет негативного окраса, если ты об этом. Можно сказать, «отсасывает лишних программистов из экосистемы Java».

Result-Code ()
Последнее исправление: Result-Code (всего исправлений: 1)
Ответ на: комментарий от Begemoth

Взялся за Котлин без знания джавы?

Для самостоятельного языка, который признал аж сам гугл и рекомендует его к использованию в новых проектах, требование как минимум абсурдное.

Oberstserj ★★ ()
Ответ на: комментарий от Result-Code

Фактически, паразитирует на экосистеме Java, переиспользуя библиотеки

переиспользуя библиотеки

А эти библиотеки откуда взялись? Их спецом под жабу писали что-ли? Насколько я понял большая часть из них тупо адаптирована была.

Oberstserj ★★ ()

Это аннотации. В сгенерированном байткоде они не нужны насколько я знаю, они нужны для генерации кода. @Dao подсказка для компилятора, что для этого интерфейса нужно сгенерировать тела для методов по @Query или @Insert. Всё это даёт библиотека Room из AndroidX.

Не претендую на правду, мог где-то ошибиться.

a1batross ★★★★★ ()
Последнее исправление: a1batross (всего исправлений: 1)
Ответ на: комментарий от Result-Code

большую часть

Что-то мне подсказывает, что далеко не большую.

Всё же 25 лет языку.

А это вообще сегодня не имеет никакого значения на самом деле. Завтра гугл объявит о старте их фуксии и все эти 25 лет будут слиты в null.

Oberstserj ★★ ()

Смотрю кто-то применяет мою гениальную идею генерить методы для запросов к БД средствами метапрограммирования. Лол. У дураков мысли сходятся.

bread ()

Раз здесь все еще пытаетесь обсуждать то что решилось вторым постом, то может подскажете, есть ли в Android Studio кнопка или команда что бы из редактируемого файла активизировать/показать где этот файл в дереве проекта в левой панели?

victor79 ()
Ответ на: комментарий от Oberstserj

Как скромно умолчало, что API Android основано на Java. И тот факт, что Котлин проектировался из учёта работы на JVM. Так что рекомендация - логичная.

Ну и преклонение перед гуглом - тоже показательно.

Begemoth ★★★★★ ()
Ответ на: комментарий от Oberstserj

Завтра гугл объявит о старте их фуксии и все эти 25 лет будут слиты в null.

Я, наверно, открою страшную тайну, кроме мобилок ещё есть и другие устройства с процессорами и ОС внутри.

Begemoth ★★★★★ ()

Это пользовательские атрибуты, привязанные к интерфейсу и его методам. Сами по себе они ничего не делают. Но какая-то библиотека, вероятно Room, эти атрибуты прочитает с помощью Reflection и уже что-то сделает (очевидно сгенерирует реализацию этого интерфейса).

Legioner ★★★★★ ()
Последнее исправление: Legioner (всего исправлений: 1)
Ответ на: комментарий от Oberstserj

Почему такая вера в функсию? У гугла две сотни закрытых проектов (https://killedbygoogle.com/), некоторые из них даже до нормального релиза не добрались.

Фуксия пока даже каких-то планов на воплощение в девайсах не имеет, не говоря уже про замену андроида.

mono ★★★★★ ()
Ответ на: комментарий от victor79

то может подскажете, есть ли в Android Studio кнопка или команда что бы из редактируемого файла активизировать/показать где этот файл в дереве проекта в левой панели?

Кнопка-мишень. В заголовке этой самой левой панели.

EXL ★★★★★ ()
Ответ на: комментарий от Begemoth

API Android основано на Java

Котлин проектировался из учёта работы на JVM

Что не делает Kotlin несамостоятельным

Так что рекомендация - логичная

рекомендация

рекомендация

Ну и преклонение перед гуглом - тоже показательно.

Чье? Бреслава? Ну дык чувак прекрасно выполнил поставленную перед собой задачу в очень узких рамках тз.

Oberstserj ★★ ()
Ответ на: комментарий от Begemoth

Я, наверно, открою страшную тайну, кроме мобилок ещё есть и другие устройства с процессорами и ОС внутри.

Я, наверно, открою страшную тайну, кроме других устройств с процессорами и ОС внутри, есть мобилки, которые занимают чуть-ли не половину рынка как численно, так и в статистике потребления контеннта, что и приносит основное бабло.

Oberstserj ★★ ()
Ответ на: комментарий от mono

Почему такая вера в функсию?

Это был просто пример. Честно говоря, этот проект мне больше напоминает труп, который насилуют какие-то зомбаки в тщетных попытках найти хоть каплю высохшей крови. Так что я в него(нее) не верю вовсе.

Oberstserj ★★ ()
Ответ на: комментарий от in_dance

А какие именно технологии?

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

И вот вопрос, мне этот вариант доизучать, или лучше искать другой? Из упоминаемых в инете были libgdx, flutter.

Так же непонятно, как эти xml попадают в компиляцию - на них где-то ссылка, или раз есть файл xml значит его комплятор обязательно добавит в сборку? Для примера, один из файлов themes.xml, но поиском по проекту «themes» ничего не находит. Внутри же все эти xml все друг на друга ссылаются по тегу-имени, без упоминания где-либо имени файла.

victor79 ()