@kotlin_lang

Страница 554 из 982
Mikhail
20.02.2018
14:53:37
Ну то есть нужна Map<Resource, (Resource) -> Config>?

Va
20.02.2018
14:53:39
первая идея конфигуратора — список лямбд, в которых описаны правила конфигурации, которые потом fold'ом сводятся к одной конфигурации. но ресурс типизированый, я хочу, чтобы в лямбду передавался Resource<T>, а лямбды не типизируются дженериками, поэтому нужен еще какой-то вариант, за которым я, в общем-то, и обратился к вам

Ну то есть нужна Map<Resource, (Resource) -> Config>?
нет. я заранее не знаю ничего о ресурсах

Google
Va
20.02.2018
14:56:38
следовательно, он не может выступать ключом

Mikhail
20.02.2018
14:58:11
Для такого кейса, кстати, отлично подойдет Resource<*>, по моему, такое и в лямбду можно

Va
20.02.2018
14:59:56
Для такого кейса, кстати, отлично подойдет Resource<*>, по моему, такое и в лямбду можно
и да и нет. допустим, у меня есть экстеншн fun <T> Resource<T>.createSomeTransformer(), который мне нужно впихнуть в конфигурацию. в случае с Resource<*>, я не смогу вызвать этот метод

Quantum Harmonizer
20.02.2018
15:00:45
проперти ты имел в виду

Alexey
20.02.2018
15:00:55
Дайте человеку сначало понять, что он хочет сделать

Va
20.02.2018
15:00:57
да, лямбды как проперти я имел в виду)

Alexey
20.02.2018
15:01:21
хотя бы в псевдокоде

Va
20.02.2018
15:06:51
если я недостаточно понятно объяснил суть проблемы, скажите об этом, я перефразирую )

Mikhail
20.02.2018
15:15:30
ресурсы зовут сервис "хэхэй сервис, дай мне конфиг" сервис говорит "ага, знаю тебя, для тебя конфиг А"

Va
20.02.2018
15:15:48
именно так

Google
Mikhail
20.02.2018
15:16:00
поему здесь нельзя использовать структуру данных с лямбдами?

Va
20.02.2018
15:17:42
поему здесь нельзя использовать структуру данных с лямбдами?
создался новый ресурс. "сервис, дай конфиг, я ресурс А" "смотрю в мапу, ключом которого является ресурс, ищу в нем ключ А, не могу найти, потому что этот объект только что был создан"

Mikhail
20.02.2018
15:20:01
какой обьект?

Va
20.02.2018
15:22:25
какой обьект?
у тебя ключ — ресурс как я заранее могу положить в мапу конфигурацию по ключу, если ключ — и есть сам объект, которому нужна конфигурация ?

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

вроде сказал )

Va
20.02.2018
15:34:24
дескриптор ресурса — url. тогда, получается, мне нужно заранее прописывать конфигурацию для конкретного url и это, в общем-то, логично. но большую часть времени, ты хочешь описывать конфигурацию для, например, всех ресурсов этого сервиса. а конфигурацию для конкретного ресурса, впрочем, можно прописать у самого ресурса и склеить с конфигурацией сервиса

Va
20.02.2018
15:37:25
для определения общей конфигурации

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

или не для всех, а только для тех, у кого url содержит слово api

Bogdan
20.02.2018
15:38:49
если ресурс сам знает свою конфигурацию, то зачем ему сервис?
у него несколько конфигов будет, как я понял

Va
20.02.2018
15:39:29
у него несколько конфигов будет, как я понял
их можно склеивать, это не проблема

Mikhail
20.02.2018
15:41:20
или не для всех, а только для тех, у кого url содержит слово api
тогда тебе поможет цепочка парсеров, а-ля Interceptor в okHttp

Va
20.02.2018
15:44:28
тогда тебе поможет цепочка парсеров, а-ля Interceptor в okHttp
я хочу конфигурировать не Resource<*>, а Resource<T>

Alexey
20.02.2018
15:52:48
Как ты хочешь использовать инфу о T?

Google
Виталий
20.02.2018
17:24:51


Ребят чет я с коллекциями туплю, в жабе так, а как реализовать в котлине ? что бы без null

ATile - интерфейс, остальные наследники

Quantum Harmonizer
20.02.2018
17:25:58
arrayOf(...)

Виталий
20.02.2018
17:26:37
arrayOf(...)
там вроде варгаг, + матерится на ATile отсутствует компонент какой то

ATile = интерфейс

Quantum Harmonizer
20.02.2018
17:27:20
варарг, и что? остальное вообще не содержательно

Виталий
20.02.2018
17:28:16
варарг, и что? остальное вообще не содержательно
ладно, варгаг я посторю, ATile он не пусткает туда )))

варарг, и что? остальное вообще не содержательно
Classifier 'ATile' does not have a companion object, and thus must be initialized here

это игнтерфейс а оно гвоворит инициализируй его ?

Quantum Harmonizer
20.02.2018
17:29:42
код какой?

Va
20.02.2018
17:29:49
Array<ATile>(size) { создать объект }

Виталий
20.02.2018
17:30:04
двойной массив

Quantum Harmonizer
20.02.2018
17:30:40
Array<Array<ATile>>(size) { Array<ATile>(size) { ... } }

Виталий
20.02.2018
17:30:57
код какой?
да ни какой не работает кроме arrayOfNulls

Va
20.02.2018
17:31:04
Array<Array<ATile>>(size) { row -> Array<ATile>(size) { column -> ... } }

Quantum Harmonizer
20.02.2018
17:31:09
Va
20.02.2018
17:31:37
а еще можно typealias зафигачить, чтобы не страдать <<<<>>>>>

Виталий
20.02.2018
17:31:38
ПОКАЖИ КОД
да его нет, я пишу и удаляю, потому что ошибки

Quantum Harmonizer
20.02.2018
17:31:54
у меня всё работает

Google
Виталий
20.02.2018
17:33:50
троеточие - че туда пихать то ?)))

эта куча скобок просто мозг выносит

Quantum Harmonizer
20.02.2018
17:34:12
инициализацию

Array<Array<ATile>>(size) { Array<ATile>(size) { SomeTile() } }

Виталий
20.02.2018
17:34:53
инициализацию
то есть можно функцию ? потому что туда пихать наследников разных надо

а еще можно typealias зафигачить, чтобы не страдать <<<<>>>>>
а тайпалиас как бцдет ? без кучи скобочек всяких

приведение типа ?

Va
20.02.2018
17:37:05
typealias Matrix<T> = Array<Array<T>> inline fun <reified T> createMatrix(sizeX: Int, sizeY: Int, init: (Int, Int) -> T) = Matrix(sizeX) { x -> Array(sizeY) { y -> init(x, y) } } и создаешь матрицу в виде createMatrix(10, 20) { x, y -> ... }

и не будет куча скобочек

а вот все остальное засунь куда-то в файл с названием Extensions или как-то так

Виталий
20.02.2018
17:39:11
а вот все остальное засунь куда-то в файл с названием Extensions или как-то так
я нифига не понял в реализации... пойду почитаю гденить

Va
20.02.2018
17:41:08
val matrix = createMatrix(10, 20) { x, y -> SomeTile() } и пользуйся тем же matrix[4][4] но обрати внимание, что сделать matrix[4][4] = SomeOtherTile() не выйдет, потому что матрица иммутабельна(не меняется)

Va
20.02.2018
17:42:35
да почему же, на здоровье, только тогда val matrix = createMatrix<ATile>(10, 20) { x, y -> SomeTile() }

Va
20.02.2018
17:44:10
ну например

да, видимо )

Google
Виталий
20.02.2018
17:44:40
еще бы знать кто такой иммутабельна )

Va
20.02.2018
17:44:54
значит, что его нельзя менять

Виталий
20.02.2018
17:45:17
val то есть

Va
20.02.2018
17:45:53
погоди, почему матрица иммутабельна?
потому что Array<Array<T>>, не MutableArray

Quantum Harmonizer
20.02.2018
17:46:05
потому что Array<Array<T>>, не MutableArray
неизменяемых массивов нет

Виталий
20.02.2018
17:46:25
ну менять я не могу ток ее размеры, в ячейках то я могу копаться

ну да

Va
20.02.2018
17:46:48
неизменяемых массивов нет
чет меня леший попутал

Виталий
20.02.2018
17:48:00
ну если он val то переинициализировать его нельзя сменив размеры, а если var то его можно поменять инициализировав заного с новыми размерами, я так понял

Va
20.02.2018
17:48:08
тогда отбой, можно делать любой set

Виталий
20.02.2018
17:48:48
Va
20.02.2018
17:48:54
да, my bad ?

листы немутабельны, да ?

Александр
20.02.2018
17:49:44
:-)

Виталий
20.02.2018
17:50:05
в листах вроде возвращается новый массив, а пихать нельзя ?

Quantum Harmonizer
20.02.2018
17:50:06
листы немутабельны, да ?
всё, что за интерфейсами, делится на читаемое и записываемое — Iterable/Iterator, Collection, List, Set

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