
Andrey
24.08.2018
12:42:23

Quantum Harmonizer
24.08.2018
12:42:35

Andrey
24.08.2018
12:45:26
кажется, если есть мембер, экстеншен недостижим)
Вообще это плохо. Один человек написал библиотечку с экстеншенами к другой библиотечке, потом в другой библиотечке другой человек сделал мемберы с теми же именами и прощай экстеншены. Их теперь никак не вызовешь, если не переделывать библиотечку с экстеншенами.

Quantum Harmonizer
24.08.2018
12:46:05

Google

Andrey
24.08.2018
12:46:52
похоже на design flaw

Alexey
24.08.2018
12:46:58

Andrey
24.08.2018
12:47:23

Alexander
24.08.2018
12:48:04
и та к и так
Разучился я в конец писать на яве, но все-таки запустил. Для топ левел расширения все работает

Quantum Harmonizer
24.08.2018
12:48:22
похоже на design flaw
Ну ситуация такая: можно читать значение, а если в области видимости есть транзакция, то ещё и писать.

Andrey
24.08.2018
12:48:26

Bogdan
24.08.2018
12:48:54

Alexander
24.08.2018
12:50:11
Практически тоже самое, только строка в ресивере и все работает
Может я не правильно вопрос понял. В джаве работает

Bogdan
24.08.2018
12:53:43
я кидал код с котлин кодом

Alexander
24.08.2018
12:54:13
Аа. Ну это другое

Bogdan
24.08.2018
12:54:27
вот проблема

Google

Bogdan
24.08.2018
12:54:28
Никакой разницы. Все экстеншены от ресивера отвалятся, как только у него появятся пееркрывающие мемберы. Притом наглухо и без права воскрешения.

Andrey
24.08.2018
12:59:10
Ага. И я выше описывал, как можно отловить эти грабли в условиях, когда два разраба пишут две библиотечки, притом оба ничего плохого не делают.

Alexey
24.08.2018
13:00:00
А кек в котлине нельзя вообще вызвать экстеншен эксплиситно

Kirill
24.08.2018
13:00:55
Ну потому что он не лежит там, видимо.

Andrey
24.08.2018
13:01:13
В общем, экстеншены - вещь опасная с точки зрения поддержки изменений в коде

Bogdan
24.08.2018
13:03:10

Hip
24.08.2018
13:06:03

Bogdan
24.08.2018
13:06:18

Andrey
24.08.2018
13:07:00

Bogdan
24.08.2018
13:07:03
(подсветка)

Andrey
24.08.2018
13:07:37

Bogdan
24.08.2018
13:07:50

Alexey
24.08.2018
13:09:11
Намного проще когда данные и функции разделены, нет никакой мутоты с наследованием

Andrey
24.08.2018
13:09:33

Bogdan
24.08.2018
13:09:42

Google

Bogdan
24.08.2018
13:10:09

Andrey
24.08.2018
13:12:03

Bogdan
24.08.2018
13:12:47

Andrey
24.08.2018
13:13:18

Bogdan
24.08.2018
13:13:34
или разные разрабы пишут одинаковые классы под одинаковыми пакетами, с одинаковыми именами ?

Andrey
24.08.2018
13:14:48
если пекеджы различаются то да
Всё равно не помнимаю, как мне импорты помогут сделать код экстеншенов доступным. Только их переименование поможет. А переименовать я тоже не могу, так как это сломает код тех, кто мой код использует.

Bogdan
24.08.2018
13:14:53
короче это @flood

Andrey
24.08.2018
13:15:59

Bogdan
24.08.2018
13:16:57

Konstantin
24.08.2018
13:17:39
abstract class AbstractClass<T> {
companion object{
private val stuffy: Stuff<T> = Stuff.create()
}
}
подскажите что не так написал, пишет что unresolved reference в компаньоне

Andrey
24.08.2018
13:18:29

Bogdan
24.08.2018
13:19:46

Руслан
24.08.2018
13:19:56
Импорты помогут не скомпилироваться такому коду.
Импорты помогу сделать локальный алиас для импортированного экстеншена
На практике конечно может такое случиться, но это все очевидно и контролируемо

Andrey
24.08.2018
13:21:07

Руслан
24.08.2018
13:21:52
import x.y.z as foo
Если не изменяет память, не могу проверить сейчас

Bogdan
24.08.2018
13:22:30

Google

Bogdan
24.08.2018
13:25:59
Andrey еще люди каке-то там тесты дурацкие пишут но вы их не слушайте

Руслан
24.08.2018
13:26:40
При всем этом экстеншены это одна из самых вкусных фич. Вторая конечно после конструкторов, но именно то чего очень сильно не хватает в джава. Не просто конечно экстеншенов, а экстеншенов и инлайна, ну и пропертей. Ой, опять котлин получился ;)

Andrey
24.08.2018
13:26:42
import x.y.z as foo
Спасибо тебе, добрый человек. Ты ответил на исходный вопрос, который и привёл к этому флуду.

Sergey
24.08.2018
13:27:09

Andrey
24.08.2018
13:28:18

Bogdan
24.08.2018
13:32:55

Andrey
24.08.2018
13:33:44

Alexey
24.08.2018
13:33:48
Мне кажется вы просто обсуждаете кейс, использования экстеншенов "не по назначению"

Admin
ERROR: S client not available

Bogdan
24.08.2018
13:34:01

Alexey
24.08.2018
13:35:17
По мне экстендить стоит классы данных
Чтобы добавить "сахарка" в свой dsl

Boris
24.08.2018
13:36:13

Andrey
24.08.2018
13:38:19

Bogdan
24.08.2018
13:39:06

Andrey
24.08.2018
13:39:52

Руслан
24.08.2018
13:40:18

Quantum Harmonizer
24.08.2018
13:41:17

Google

Andrey
24.08.2018
13:41:41

Alexey
24.08.2018
13:42:50
Ссаными тряпками такого архитектора библитек надо гнать

Quantum Harmonizer
24.08.2018
13:43:20
ваще DTO — очень спорный паттерн

Alexey
24.08.2018
13:43:31
А при чем тут DTO
data != dto
ваще никак

Andrey
24.08.2018
13:44:32
кек, как данные могут стать не данными
Легко. Автор библиотеки с классами данных решил, что ничего плохого не будет, если в класс данных добавить мемберов. С точки зрения ООП ничего плохого и нет в расширении функциональности класса.

Alexey
24.08.2018
13:45:08
С точки зрения здравого смысла data class должны быть чистыми

Quantum Harmonizer
24.08.2018
13:45:25

Bogdan
24.08.2018
13:45:34

Quantum Harmonizer
24.08.2018
13:45:43

Di7aK
24.08.2018
13:45:45
да не вдруг

Andrey
24.08.2018
13:45:49

Alexey
24.08.2018
13:46:00
Ну взять и херить вещи пришедшие из функциональщины своим ООП - это такое
всё так

Quantum Harmonizer
24.08.2018
13:46:18

Di7aK
24.08.2018
13:46:23
а если его от Parcelable надо унаследовать

Alexey
24.08.2018
13:46:43
type class

Quantum Harmonizer
24.08.2018
13:46:44