@kotlin_lang

Страница 978 из 982
Dmitry
25.10.2018
14:42:24
в плане с классом? заменяешь interface A на open class A и добавляешь тело для fun a() и компилится

Kirill
25.10.2018
14:59:37
Если я правильно посчитал, это число на два порядка меньше Long.MAX_VALUE :)
Ну, если нам надо будет его умножить на дробь вида 1.234 в рамках целочисленной арифметики, то сначала мы умножаем на 1234, потом делим на 1000, и опа )

Google
Alexey
25.10.2018
15:19:12
Ну long очень походит на мамкиного оптимизатора, это далеко не самая затратная часть приложения

Beholder
25.10.2018
15:31:50
чем BigDecimal-то людей не устраивает?

Alexey
25.10.2018
15:36:54
Вот вообще хз

Kirill
25.10.2018
15:47:55
Да
Аргументы против BigDecimal будут?

ЕВГЕНИЙ
25.10.2018
15:54:22
Andrey
25.10.2018
16:03:04
сложна много букв
Уж вот в Kotlin с его экстеншенами на BigDecimal не сказал бы, что сложна и много букв

Andrey
25.10.2018
16:09:53
а как это решает проблему?)
Ну выражения с использованием BigDecimal записываются так же, как и для Double. Никаких тебе многословных методов типа add, subtract, multiply и прочего. Плюс есть возможность перегрузить операторы +-*/, чтобы они ещё другие численные типы в качестве аргументов принимали и кастили их к BigDecimal

ЕВГЕНИЙ
25.10.2018
16:15:14
Ну выражения с использованием BigDecimal записываются так же, как и для Double. Никаких тебе многословных методов типа add, subtract, multiply и прочего. Плюс есть возможность перегрузить операторы +-*/, чтобы они ещё другие численные типы в качестве аргументов принимали и кастили их к BigDecimal
звучит как план, темне менее не вижу как это решает проблему сложности класса, тем что вы тудда добавите пару тройку методов которые заставят вас думать, что вы действительно туда что то добавили или удалили, на таком уровне это может и подойдет, когда дайдет до факторизации или поиска с сапостовлением целых чисел не думаю что удасться что то сделать хотябы близкое к перебору делителей)) а так да конечно экстеншены явно будут к месту

Алексей
25.10.2018
16:15:15
Аргументы против BigDecimal будут?
Сделайте BigDecimal a = 10 или сложите пару BigDecimal без магии операторов котлина (которые тут всё же, как я помню, не работают), или использовать без приведения типа там, где требуется int, long, byte (хотя казалось бы). Ну то есть вопрос в том, что эту штуку неудобно использовать как число.

Навесил операторов и работаешь как с числом

Google
Алексей
25.10.2018
16:16:32
Но без этого создается ощущение, что что-то тут не так

Andrey
25.10.2018
16:21:38
Сделайте BigDecimal a = 10 или сложите пару BigDecimal без магии операторов котлина (которые тут всё же, как я помню, не работают), или использовать без приведения типа там, где требуется int, long, byte (хотя казалось бы). Ну то есть вопрос в том, что эту штуку неудобно использовать как число.
Мне кажется, что вы тоже путаете BigDecimal (что-то вроде действительных чисел) и BigInteger (что-то вроде целых чисел). Ну и плюс к тому, смотрите выше. Не думаю, что с Int вы легко бы писали выражения, если бы операторы для него не были реализованы на уровне языка, JVM и процессора

Алексей
25.10.2018
16:22:46
Согласен:) абсолютно:) но я говорил именно о том, что работа с ним в коде неуклюжая, если речь о Java:)

ЕВГЕНИЙ
25.10.2018
16:27:22
Вы не путаете BigDecimal и BigNiteger случаем?
мы вроде как о семестве Big* говорили? у всех у них есть свои сильные и слабые стороны, я просто не считаю что если вы можете через плюс сложнить два Big* то это чем то делает его легче, я не уверен в этом, возможно вы меня поправите.

ЕВГЕНИЙ
25.10.2018
16:28:22
А для double и long все перечисленные плюшки из коробки, да?
они и так прикрастно укладываются в оперативку))

Kirill
25.10.2018
16:29:58
Что-то всё в кучу. И богатство операций, и производительность

Алексей
25.10.2018
16:30:18
Dmitry
25.10.2018
16:30:28
так в чем проблема-то?

сложна много букв

Andrey
25.10.2018
16:30:43
мы вроде как о семестве Big* говорили? у всех у них есть свои сильные и слабые стороны, я просто не считаю что если вы можете через плюс сложнить два Big* то это чем то делает его легче, я не уверен в этом, возможно вы меня поправите.
Легче в плане чего? Как по мне, так Big* довольно просто реализованы, с учётом требования: "с высокой точностью хранить большие числа и не особо беспокоиться о проблемах переполнения, потери точности и прочих болезней Long, Double и иже с ними"

Реализация Int и Long вообще говоря поганенькая, как мне кажется. Они молча "жрут" ошибку переполнения и тупо становятся отрицательными

Это на практике приводит к внезапным бесконечным циклам, отрицательным величинам там, где их быть не должно.

Egor
25.10.2018
16:34:13
Оооо, только сегодня эта статья на хабре вышла, рофл

Dmitry
25.10.2018
16:34:31
Если складываются два инта, то проверить на ошибку переполнения после сложения не так уж и трудно, нужно ведь на знак слагаемых смотреть и знак результата Но посчитать иначе какой-нибудь хеш станет неприятнее, т.к. там переполнение - вполне нормальная вещь

Egor
25.10.2018
16:34:59
https://vk.com/wall-20629724_1118752

Google
Andrey
25.10.2018
16:38:10
С Int и Long примерно та же история, как и со связью между шириной лошадиного зада и шириной железнодорожной колеи. Они пришли из ассемблерного представления чисел. Весьма низкоуровневые числа. При этом высокоуровневые языки болеют при работе с ними всеми проблемами этой абстракции, хотя напрямую с ассемблером никак не связаны

Andrey
25.10.2018
16:39:45
я понял в чем дело, вы про расширение внешнего интерфейса через эксненшены?
Ну да. А вы про что? Про внутреннюю машинению этих классов? Так мне она без разницы с точки зрения пользователя.

ЕВГЕНИЙ
25.10.2018
16:42:03
Ну да. А вы про что? Про внутреннюю машинению этих классов? Так мне она без разницы с точки зрения пользователя.
ахах ну да, я про кишки)) тогда да экстеншены хорошо смотрятся, я думал речь идет о подмене алгоритмов всяких, mathcontext и прочих объектов) Согласен на все 100 можно управстить внешний интерфейс и сделать его более котлин френдли так сказать

Andrey
25.10.2018
16:44:06
Ну у этих то хоть кишки можно почитать, даже взять за основу чего-нить своего, если припрёт, а вот в кишки Int, Long и Double уже гораздо сложнее залезть. С точки зрения программиста на Kotlin/Java там вообще магия внутре.

Kirill
25.10.2018
17:07:05
Реализация Int и Long вообще говоря поганенькая, как мне кажется. Они молча "жрут" ошибку переполнения и тупо становятся отрицательными
Особенности реализации в железе проца, никуда не денешься. Переопределить на уровне jvm можно, но производительность просядет

Денис
25.10.2018
20:16:46
@HeapyHop А это ок, что в канале Daily Kotlin ты выкладываешь запись доклада с Джокера, которая, помнится, пока предназначена только для тех, у кого был билет? Помнится, в письме с ссылкой прямым текстом просили не распространять.

Денис
25.10.2018
20:39:04
Мне просто искренне интересно, мнение джуговцев кажется очевидным. Ругаться или что-то ещё не хочу.

Igor
25.10.2018
20:40:11
Если что-то не понравится, они сами напишут (тут же не плейлист все таки выложили)

Денис
25.10.2018
20:42:26
Окей, я вас услышал. Спасибо за ответ.

Руслан
25.10.2018
20:43:06
https://t.me/kotlin_lang/62682

Денис
25.10.2018
20:45:02
https://t.me/kotlin_lang/62682
Окей, спасибо ещё раз!

Alexey
26.10.2018
06:42:18
ну что, ребят, уже затащили корутины в прод??

Виктор
26.10.2018
06:42:40
давно ?

Alexey
26.10.2018
06:43:23
давно ?
огонь, как полет?

Виктор
26.10.2018
06:44:03
шикарно проблем, связанных с именно корутинами, не было

особенно годно они на clean arch ложатся (про андроид) во внутренних слоях suspend-функции и в презентере уже билдеры, их запускажщие и управляющие потоками работает быстро, работает стабильно

Pavel
26.10.2018
06:57:50
шикарно проблем, связанных с именно корутинами, не было
У меня проблема была с релизной сборкой, пришлось обновляться до 1.0.0-RC с переходом на Котлин 1.3

Google
Виктор
26.10.2018
07:19:19
Pavel
26.10.2018
07:22:47
ну на то они и RC, что != релизному стабильному статусу =)
не, проблема была именно в стабильной версии, но починили это в RC

Vladimir
26.10.2018
07:25:41
Pavel
26.10.2018
07:26:41
Проблема была с прогардом

Ping
26.10.2018
07:55:13
.

Sergey
26.10.2018
08:06:27
Алексей
26.10.2018
08:08:21
Если покопаться - даже найду

Alexey
26.10.2018
08:08:52
есть же такой
Да, а хочется делать в ретрофитом интерфейсе просто suspend функции которые сразу модели возвращают

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

У Вортана в call adapter предусмотрена отмена запросов

Alexey
26.10.2018
08:10:06
Хм... но зачем, если там deferred?
Чтобы не писать await

И не переключаться на другую корутину

Алексей
26.10.2018
08:10:41
Писать suspend чтобы не писать await?

Alexey
26.10.2018
08:10:48
С suspend можно просто withContext(Common pool){}

Алексей
26.10.2018
08:11:13
Google
Alexey
26.10.2018
08:11:19
Писать suspend чтобы не писать await?
Ну с deferred вроде там ещё корутина создаётся насколько я понимаю, а с withContext нет

Алексей
26.10.2018
08:12:02
С deferred точно создается, а с withContext не знаю

Жабра
26.10.2018
08:13:01
С deferred точно создается, а с withContext не знаю
В любом случае создаётся корутина. WithContext отличается от runBlocking тем, что он засыпает, а не блокирует поток. А чтобы заснуть - нужна приостановка.

Жабра
26.10.2018
08:13:58
Разве?)
А как ещё?

Alexey
26.10.2018
08:14:18
А как ещё?
Просто переключил контекст исполнения и все, не?

На другой тред

Жабра
26.10.2018
08:21:37
Просто переключил контекст исполнения и все, не?
https://gist.github.com/indrih17/36af83f63f69de92f352a611715769c5 код запуска withContext

Внимание в конец

Alexey
26.10.2018
08:22:51
Внимание в конец
Хм, Окай. Только почему .txt?

Жабра
26.10.2018
08:23:48
Alexey
26.10.2018
08:24:27
??
Это ты из сорцов корутина взял?

Никита
26.10.2018
08:54:53
Что может быть не так? val a = resultList.sortedBy { it.date.time } date это java.util.Date, если другое поле указать то сортирует нормально...

Никита
26.10.2018
09:00:35
почему нет?

однозначное сравнение

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