Size: a a a

2019 October 10

MG

Matthew Good in Kotlin Start
(depending on the requirements of the class)
источник

AM

Andrew Mikhaylov in Kotlin Start
Oh, so you don't expect type cast to be correct, you are okay with new instance of new type? Then yes, this may be a way to go.
источник

MG

Matthew Good in Kotlin Start
in my case, vectorBase is just acts as a extension class for vectorCore, (eg it only contains functions)
источник

AM

Andrew Mikhaylov in Kotlin Start
Depends on whether you always expect a copy or not. Collection<T>.toMutableList(): MutableList<T>, for example, always makes a copy, so both
setOf(1, 2, 3).toMutableList()[0] = 5
and
mutableListOf(1, 2, 3).toMutableList()[0] = 5
don't change initial collection. If you are okay with modifications, you can do something like
fun VectorCore.toVectorBase() =
   if(this is VectorBase)
       this
   else
       VectorBase().also { it.addAll(this) }
источник

AM

Andrew Mikhaylov in Kotlin Start
If you're not sure, it's safe to go with always-return-a-new-copy approach.
источник

AM

Andrew Mikhaylov in Kotlin Start
Then go with the latter snippet. In case you call this method on VectorBase, you'll get the same object. If you call it on other VectorCore, you'll get a copy.
источник

AM

Andrew Mikhaylov in Kotlin Start
And it's safer to call the function not toVectorBase but asVectorBase — this is a convention most of standard library follows.
источник

VT

Vadzim Tsitarenka in Kotlin Start
Всем привет. Есть проект мобильного клиента на kotlin. Я хочу сделать сборки для 3-х серверов (dev, qa, prod). Вопрос такой, могу ли я сделать 3 конфига (есть параметры которые отличаются хотя бы тем, что подключение идет к одному из серверов) и в зависимости от переданного параметра (либо настроек окружения) собирать билд под соответствующее окружение?
источник

AM

Andrew Mikhaylov in Kotlin Start
With toSmth developers wouldn't expect that changes to resulting object propagate to source, with asSmth it could and it's expected.
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadzim Tsitarenka
Всем привет. Есть проект мобильного клиента на kotlin. Я хочу сделать сборки для 3-х серверов (dev, qa, prod). Вопрос такой, могу ли я сделать 3 конфига (есть параметры которые отличаются хотя бы тем, что подключение идет к одному из серверов) и в зависимости от переданного параметра (либо настроек окружения) собирать билд под соответствующее окружение?
Вы в рантайме / при запуске хотите переключаться или обязательно при сборке?
источник

VT

Vadzim Tsitarenka in Kotlin Start
Andrew Mikhaylov
Вы в рантайме / при запуске хотите переключаться или обязательно при сборке?
при сборке
источник

AM

Andrew Mikhaylov in Kotlin Start
Если первое, то достаточно тащить на борту все конфиги и опираться на, к примеру, переменную среды. Если второе, для гредла есть плагин на эту тему, ща найду.
источник

MG

Matthew Good in Kotlin Start
источник

MG

Matthew Good in Kotlin Start
im not sure which would be appropriate
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadzim Tsitarenka
Всем привет. Есть проект мобильного клиента на kotlin. Я хочу сделать сборки для 3-х серверов (dev, qa, prod). Вопрос такой, могу ли я сделать 3 конфига (есть параметры которые отличаются хотя бы тем, что подключение идет к одному из серверов) и в зависимости от переданного параметра (либо настроек окружения) собирать билд под соответствующее окружение?
Так, я перечитал вопрос ещё раз и увидел слово "мобильная". Речь об Android же? Если так, там из коробки есть flavors, которыми это делается.
источник

VT

Vadzim Tsitarenka in Kotlin Start
Andrew Mikhaylov
Так, я перечитал вопрос ещё раз и увидел слово "мобильная". Речь об Android же? Если так, там из коробки есть flavors, которыми это делается.
спасибо, почитаю. Я просто новичок в этом, пытаюсь понять как и что
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadzim Tsitarenka
спасибо, почитаю. Я просто новичок в этом, пытаюсь понять как и что
android {
   flavorDimensions "server"
   productFlavors {
       dev {
           dimension "server"
           buildConfigField "String", "BACKEND_URL", "\"http://dev.example.org\""
       }
       prod {
           dimension "server"
           buildConfigField "String", "BACKEND_URL", "\"http://example.org\""
       }
   }
}

После этого у вас вместо assembleDebug будут assembleDevDebug и assembleProdDebug, а в классе BuildConfig появится поле BACKEND_URL.
источник

MG

Matthew Good in Kotlin Start
Andrew Mikhaylov
With toSmth developers wouldn't expect that changes to resulting object propagate to source, with asSmth it could and it's expected.
as clone() itself returns a new copy as VectorCore(), and if the type is VectorBase() then operations involved on it should probogate to its VectorCore() instance

i guess it would be more appropriate to look at this as memory allocations

in the case of
val v1 = VectorCore()
val v2 = v1 as VectorBase
i would expect v2 to be v1 cast to VectorBase such that modifying v2 also modifies v1
where as val v2 = v1.toVectorBase() would create a copy of VectorCore cast to VectorBase such that modifying v2 will not modify v1
источник

AM

Andrew Mikhaylov in Kotlin Start
Vadzim Tsitarenka
спасибо, почитаю. Я просто новичок в этом, пытаюсь понять как и что
И да, есть @gradle :)
источник

AM

Andrew Mikhaylov in Kotlin Start
Matthew Good
as clone() itself returns a new copy as VectorCore(), and if the type is VectorBase() then operations involved on it should probogate to its VectorCore() instance

i guess it would be more appropriate to look at this as memory allocations

in the case of
val v1 = VectorCore()
val v2 = v1 as VectorBase
i would expect v2 to be v1 cast to VectorBase such that modifying v2 also modifies v1
where as val v2 = v1.toVectorBase() would create a copy of VectorCore cast to VectorBase such that modifying v2 will not modify v1
Once again, it's not possible to create an instance of base class and use it as an instance of it's derivative. Since it is NOT and instance of it's derivative.
источник