@kotlin_lang

Страница 967 из 982
Denis
22.10.2018
13:56:21
т.е. прямиком в конструктор нельзя просто так заинжектить, верно?)

Mikhail
22.10.2018
13:56:38
можно

как бы так объяснить

Denis
22.10.2018
13:56:49
class PresenterA @Inject constructor(myClassA: ClassA, myClassB: ClassB): AbstractPresenter(myClass)

Google
Denis
22.10.2018
13:57:03
как бы так объяснить
ага, я тоже без кода не могу сформулировать вопрос

class PresenterA @Inject constructor(myClassA: ClassA, myClassB: ClassB): AbstractPresenter(myClass)
вот, например. У меня есть классА и класс Б. класс А я хочу передать в асбтрактный презентер, а класс Б я передаю из активи в этот презентер

в общем нужно в активити инжектить и оттуа передавать в презентер А, а из конструкора презентера А передавать в абстрактный презентер

так?

Anton
22.10.2018
13:58:08
заинжекти как проперти в базовый класс чтобы не прокидыват ькаждый раз

Alexander
22.10.2018
13:58:12
Привет, такая ситуация, у меня есть несколько элементов типа imageView, они по клику вызывают один метод, можно ли в самом методе получить id того imageView нажатие на который вызвало этот метод, надеюсь норм объяснил

Denis
22.10.2018
13:58:44
заинжекти как проперти в базовый класс чтобы не прокидыват ькаждый раз
а это норм в абстрактный базовый класс что-то инжектить?

Mikhail
22.10.2018
13:58:46
в общем, предлагаю сначала прочитать что такое DI контейнеры и как они работают, мне в свое время помог разобраться вот этот ридми https://github.com/svermeulen/Zenject#theory

Anton
22.10.2018
13:59:36
расплодить?

1 проперти?

Mikhail
22.10.2018
13:59:40
а если разным анследникам потребуются разные реализации?

Anton
22.10.2018
13:59:49
лучше в каждом наследнике кидать в конструктор ?

Google
Anton
22.10.2018
13:59:54
а если их 5?

Mikhail
22.10.2018
14:00:14
лучше в каждом наследнике кидать в конструктор ?
лучше вообще не наследоваться а делегаты делать

но это вне разговора

да, лучше в конструктор кидать

тогда у тебя есть контроль

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

Denis
22.10.2018
14:01:00
у меня 1 базовый презентер и 2 наследника, около 5 пропертей

честно говоря, мне чет не нравится в базовый че то инжектить

он же абстрактный

Anton
22.10.2018
14:01:37
Mikhail
22.10.2018
14:01:58
через проперти надо инжектить только, когда иного выхода нет

Anton
22.10.2018
14:02:00
хз мне не нравится прокидывать в каждом наследнике кучу параметров

Mikhail
22.10.2018
14:02:17
например, в случае если ты управляешь жизненным циклом объекта

Anton
22.10.2018
14:02:33
я знаю что лучше конструктор / филд

в этом месте мне больше нравится филд

Алексей
22.10.2018
14:02:41
Здравствуйте! У меня появился такой вопрос. В андроид приложении я взаимодействую с бэкендом на ASP.NET и в JSON-файлах мне приходят ключи вида "id": "854a8d07-5a37-4e1e-8547-40ce891b3663". Скажите допустимо ли будет хранить такие ключи в виде строк в базе данных или есть како-нибудь лучший способ хранения?

Сорри, если оффтоп)

Mikhail
22.10.2018
14:02:59
хз мне не нравится прокидывать в каждом наследнике кучу параметров
если эти параметры всегда вместе, можешь сделать обертку над ними и передавать один раз

Anton
22.10.2018
14:03:22
если они совсем не связаны?

Google
Denis
22.10.2018
14:05:28
всем спасибо, оба варианта работают, но мне чет не оч нравится в базовый класс инжектить

Egor
22.10.2018
14:06:09
Anton
22.10.2018
14:07:01
ну если разные реализации то да - мой вариант не подходит. тут квалифаеры и конструктор

Alexey
22.10.2018
14:11:25
Чо то какие то "Вредные советы" от админов подъехали

Алексей
22.10.2018
14:15:19
они уже передаются в JSON
Я как понимаю это GUID идентификаторы

Mikhail
22.10.2018
14:18:30
Я как понимаю это GUID идентификаторы
а, канеш просто пихай их как строки

Алексей
22.10.2018
14:18:53
а, канеш просто пихай их как строки
Спасибо за индульгенцию))

Mikhail
22.10.2018
14:19:36
ты прощен, сын мой ✝️

dimiii
22.10.2018
14:20:12
А какая епитимья-то?

Ilya
22.10.2018
14:21:25
Всем привет. А подскажите почему рекомендуют заменять list.sorted().sortedBy { ... } на list.asSequence().sorted().sortedBy { ... } ?

Igor
22.10.2018
14:37:05
Всем привет. А подскажите почему рекомендуют заменять list.sorted().sortedBy { ... } на list.asSequence().sorted().sortedBy { ... } ?
А в этом вообще есть смысл? Типа два раза сортировать ? Есть же sortedWith + compareBy / thenBy list.sortedWith(compareBy(Person::age, Person::name))

Andrey
22.10.2018
14:39:41
А в этом вообще есть смысл? Типа два раза сортировать ? Есть же sortedWith + compareBy / thenBy list.sortedWith(compareBy(Person::age, Person::name))
Ну потенциально имеет, если сортировка стабильная (мёрдж сорт, например), хотя несколько сортировок всегда лучше объединить в одну, построив соответствующий компаратор.

Алексей
22.10.2018
14:54:04
https://habr.com/post/131910/
это же про asSequence?

(или в том числе?)

Mikhail
22.10.2018
14:57:44
это же про asSequence?
вообще про всё ленивое

Google
Алексей
22.10.2018
15:03:45
А какой тип данных это в Котлине?

Aleqzandr
22.10.2018
15:04:13
Long

Vladimir
22.10.2018
15:06:35
Mikhail
22.10.2018
15:06:47
but_why.gif

Vladimir
22.10.2018
15:07:55
Ну как бы от задачи зависит, что там за uuid. Не всегда они просто рандомные.

Хотя указанный выше "854a8d07-5a37-4e1e-8547-40ce891b3663" именно такой.

Алексей
22.10.2018
15:13:23
Long
А лонг схавает такое значение guid? Или guid надо как-кто их окнвертировать?

*сконвертировать

Mikhail
22.10.2018
15:14:55
убрать "-" и toLong(radix = 16) по идее должно

Quantum Harmonizer
22.10.2018
15:15:08
у UUID есть два лонговых поля

Aleqzandr
22.10.2018
15:15:16
А лонг схавает такое значение guid? Или guid надо как-кто их окнвертировать?
https://docs.oracle.com/javase/7/docs/api/java/util/UUID.html Тебе нужны методы getLeastSignificantBits() и getMostSignificantBits()

dimiii
22.10.2018
15:15:20
А лонг схавает такое значение guid? Или guid надо как-кто их окнвертировать?
например java.util.UUID - другое дело, что вся эта экономия в 20 байт 20 байтами и ограничится

Ну в лучшем случае двумя килобайтами

Mikhail
22.10.2018
15:16:40
тем более на Android

это жи не хайлоад™

Google
Roman
22.10.2018
15:17:40
Товарищи, а можно как-то написать потокобезопасный счетчик на каналах типа val counter = ConflatedBroadcastChannel<Int>(0) без использования synchronized?.

sasha
22.10.2018
15:18:49
AtomicInteger?

Roman
22.10.2018
15:22:24
Не, нужен именно канал. По ходу никак нельзя, а жаль...

Mikhail
22.10.2018
15:23:15
Товарищи, а можно как-то написать потокобезопасный счетчик на каналах типа val counter = ConflatedBroadcastChannel<Int>(0) без использования synchronized?.
? а зачем потокобезопасный канал? Я может не секу фишку, но мне всегда казалось что каналы созданы для обмена сообщениями и потокобезопасность тут не при чем, так как нет shared state

Roman
22.10.2018
15:24:06
Ну сами каналы да, но тут ConflatedBroadcastChannel. Он как раз для хранения стейта.

Просто если я сделаю тупо counter.offer(counter.value + 1), будет дичь.

Mikhail
22.10.2018
15:28:31
я пока не сильно въехал в каналы, на что если сделать два канала и корутину, которая будет хранить стейт?

т.е. ты делаешь channel1.offer(Unit), корутина выгребает, инкрементит свой счетчик и делает channel2.offer(Int)

Alexey
22.10.2018
15:29:20
На конфе был пример как делать шейред стейт с каналами

Типо акторы для бедных

Mikhail
22.10.2018
15:29:49
ну да, сам заметил что у меня получился актор

Roman
22.10.2018
15:30:01
Вот как-то так: val increment = actor<Unit> { while (true) { receive() counter.send(counter.value + 1) } }

Это будет потокобезопасно?

Mikhail
22.10.2018
15:33:17
Это будет потокобезопасно?
нет же никаких потоков

и никакое состояние ты не шаришь

Roman
22.10.2018
15:33:37
Еще как есть. DefaultDispatcher.

Mikhail
22.10.2018
15:33:42
оно у тебя инкапсулировано внутри

Vladimir
22.10.2018
15:33:46

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