@kotlin_lang

Страница 114 из 982
? animufag ?
26.04.2017
20:26:28
В Котлине чуть побольше.

Vitaliy
26.04.2017
20:26:48
? animufag ?
26.04.2017
20:26:52
то есть засовывание чего угодно в хип = проблема ЯП?

Dmitry
26.04.2017
20:27:00
К слову про нуллейбл примитив в доке сказано https://kotlinlang.org/docs/reference/basic-types.html#representation, так что тут все очень даже явно

Google
Quantum Harmonizer
26.04.2017
20:27:06
? animufag ?
26.04.2017
20:27:13
и за этим нужно знать что такое гц

Vitaliy
26.04.2017
20:27:28
Я написал кучу примеров, когда неявно объекты создаются.

Напишите forEarch {} в загруженном месте и будут вам проблемы с GC

? animufag ?
26.04.2017
20:28:02
3 кажется

я думал будут примеры где хитро захватывается скоп и потенциальная утечка

Dmitry
26.04.2017
20:28:40
Ну тут опять к слову в джаве for (Item item: items) тоже создаст итератор..

Vitaliy
26.04.2017
20:28:43
Утечек в Котлине нет

Это язык

Ну тут опять к слову в джаве for (Item item: items) тоже создаст итератор..
Только людей, которые про это знают в джаве, намного больше, чем тех, кто про это знает в Котлине.

Почему-то.

Quantum Harmonizer
26.04.2017
20:29:26
я думал будут примеры где хитро захватывается скоп и потенциальная утечка
Вот кстати, анонимные классы в Котлине, насколько я заметил, захватывают скоуп только тогда, когда это действительно нужно.

Google
Vitaliy
26.04.2017
20:29:27
Все думают на лямбду.

Они очень хорошо сделали анонимки, да.

Михаил
26.04.2017
20:30:48
Только людей, которые про это знают в джаве, намного больше, чем тех, кто про это знает в Котлине.
котлин в основном популярен в андроид движе. а в андроид движе в принципе джаву хуже знают

Vitaliy
26.04.2017
20:31:02
Это правда.

Но по моей статистике на этот вопрос Котлинисты хуже джавистов отвечают.

На всякий случай ещё: больше строковых констант = больше GC root'ов

Dmitry
26.04.2017
20:31:55
На вопрос про неявное создание объектов?

Vitaliy
26.04.2017
20:31:58
И более загруженный хип

Dmitry
26.04.2017
20:32:20
Понял

Vitaliy
26.04.2017
20:32:34
Джависты тоже молодцы, пихают числа в мапу не думая

? animufag ?
26.04.2017
20:32:43
Утечек в Котлине нет
ну это же популярная штука, что если лямбда живёт дольше объекта в котором создалась то будут проблемы и думал неявные места про которые ты говорил будут let run apply и что-нибудь такое проперти мб

Vitaliy
26.04.2017
20:32:45
Но там чаще вспоминают про итератор

Pavel Shackih
26.04.2017
20:32:48
Автобоксинг в котлине не проблема. За счет инлайна в коллекциях его там вообще можно избежать, в остальном все как в джаве. Поэтому в целом даже лучше.

Quantum Harmonizer
26.04.2017
20:32:50
Vitaliy
26.04.2017
20:33:26
Он про простые лямбды

Которые не держатся рефами

Google
? animufag ?
26.04.2017
20:33:35
На всякий случай ещё: больше строковых констант = больше GC root'ов
они же не руты. это просто массив и гц не начинает оттуда поиск

Vitaliy
26.04.2017
20:33:44
Начинает

В некоторых реализациях

Лямбды одно из немногих мест, где Котлин быстрее.
В остальных случаях Котлин либо медленнее, либо такой же

Quantum Harmonizer
26.04.2017
20:34:28
Начинает
Где можно почитать о GC рутах? У меня слишком приблизительное представление об этом.

Vitaliy
26.04.2017
20:34:51
У нас ребята исследовали на разных машинах, исходники смотрели.

Так-то GC очень слабо анализу поддается.

? animufag ?
26.04.2017
20:35:13
чтобы начинать поиск нужно знать заранее что это ссылка

Vitaliy
26.04.2017
20:35:23
Строка не ссылка?

Pavel Shackih
26.04.2017
20:35:23
Что? Как инлайн помогает избежать боксинга в коллекциях?
Дженериков не будет вообще. Поэтому и каста из Integer в int нет, там сразу примитив будет.

Vitaliy
26.04.2017
20:35:49
Ладно, ребята. Злые вы, критику вообще не умеете воспринимать, сразу троллите.

Как почти все котлинисты.

Quantum Harmonizer
26.04.2017
20:36:02
Дженериков не будет вообще. Поэтому и каста из Integer в int нет, там сразу примитив будет.
Где дженериков не будет? В коллекциях? Каста int->Integer и наоборот быть не может, это несовместимые типы.

Vitaliy
26.04.2017
20:36:03
Разочаровали меня.

? animufag ?
26.04.2017
20:36:05
не надо так

ты писал

кококотлин

как ребёнок

Vitaliy
26.04.2017
20:36:34
У меня рука дрогнула в метро, в давке.

Google
? animufag ?
26.04.2017
20:36:35
здесь тебе нормально отвечали

Vitaliy
26.04.2017
20:36:45
Случайно вышло.

? animufag ?
26.04.2017
20:36:46
это глупо

Vitaliy
26.04.2017
20:36:48
Не нормально :(

Даже места с генерацией объектов вы как холивар восприняли :(

Vitaliy
26.04.2017
20:37:19
Хотя мы просто обсуждали с вами внутренности языка.

Какое неуютное у вас коммьюнити.

? animufag ?
26.04.2017
20:37:41
оох

Admin
ERROR: S client not available

Vitaliy
26.04.2017
20:37:48
Пойду погрущу.

? animufag ?
26.04.2017
20:37:50
короче

I
26.04.2017
20:37:51
welcome to python flood community! Мы говорим обо всем, кроме питона! За котлин позатирать можно =)

Quantum Harmonizer
26.04.2017
20:37:56
? animufag ?
26.04.2017
20:38:09
я бы поиследовал искодники гц

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

Dmitry
26.04.2017
20:38:33
? animufag ?
26.04.2017
20:38:34
чтобы был интерес

Pavel Shackih
26.04.2017
20:38:42
intArray — не коллекция.
Ну массив. Операторы все теже, что и со списками.

Vitaliy
26.04.2017
20:38:50
2 раза дрогнула ;)
Была очень сильная давка!?

Google
Vitaliy
26.04.2017
20:39:00
В Лондоне постоянно такое

? animufag ?
26.04.2017
20:39:50
Была очень сильная давка!?
в твоём кругу общения видимо твои шутки заходят

Dmitry
26.04.2017
20:57:40
но жаль для этого алоцировать объект каждый раз
Кстати, а зачем там объект вообще? т.е. если так хочется использовать функцию, то чем не подходит такой вариант? inline fun <T1, T2, R> unwrap(t1: T1?, t2: T2?, action: (T1, T2) -> R): R? { if (t1 != null && t2 != null) { return action(t1, t2) } return null } inline infix fun Any?.otherwise(crossinline action: () -> Unit) { if (this == null) action() }

Quantum Harmonizer
26.04.2017
20:59:50
crossinline здесь не нужен

Dmitry
26.04.2017
21:00:37
эт да, лишнее

Roman
26.04.2017
21:38:04
Кстати, а зачем там объект вообще? т.е. если так хочется использовать функцию, то чем не подходит такой вариант? inline fun <T1, T2, R> unwrap(t1: T1?, t2: T2?, action: (T1, T2) -> R): R? { if (t1 != null && t2 != null) { return action(t1, t2) } return null } inline infix fun Any?.otherwise(crossinline action: () -> Unit) { if (this == null) action() }
я могу только догадываться зачем. предполагаю, что для того, чтобы не создавать лишний апи для всех типов. т.е. сделать это "ключевое слово"/метод применимым только в нужном контексте аля else

но предложенный тобой вариант тоже хорош

а нельзя сделать экстеншн функцию только для null? тогда otherwize по сути заменит элвис оператор

=)

для кейзов с проверками, о которых была речь будет в самый раз для улучшения читабельности

а вообще, почитал тред на kotlin discuss который выше кидали и не понял, почему никто не предлагает вариант как в Swift

if (let localA = a, let localB = b) { } else {}

ну или что-то такое

по моему очень простое, удобное и неломающее ничего решение

внутри блока становятся доступны немутабельные ненулевые значения, при этом сохраняется доступ к исходным свойствам

красота

kirbulich
27.04.2017
01:42:03
Кто libgdx использует с kotlin

Опишите ваши ощущения

Andrew
27.04.2017
01:45:58
@angmarr

Konstantin
27.04.2017
04:24:56
Я использовал как-то. Вроде ок, но на пару неочевидных вещей я натыкался, что они мне пару часов отнимали.

Страница 114 из 982