
Nikita
23.07.2018
21:44:13
Логика проста, при двух условиях делается одинаковые действия, но одно из условий требует дополнительных действий

Хекс
23.07.2018
21:44:14

Nikita
23.07.2018
21:44:37

Vladislav
23.07.2018
21:45:22
А как это будет работать?
выйдет на первом, т.к. у тебя из вен только 1 результат может вернуться. Тут наверное как с элвисом - проще ифом написать
if (a||b) {do1}
if (a) {do2}
if (b) {do3}

Google

Хекс
23.07.2018
21:45:22
да ну
каждое условие проверять
кто так делает

Vladislav
23.07.2018
21:45:54
просто
when!=switchCase от слова совсем..

Хекс
23.07.2018
21:49:35
when {
a, b -> {
do1()
if (a) do2() /*else*/
if (b) do3 ()
}

Vladislav
23.07.2018
21:50:15

Хекс
23.07.2018
21:50:35
я исходил из неизвестности вариантов

Vladislav
23.07.2018
21:50:55
да сколько бы не было ))

Google

Vladislav
23.07.2018
21:51:04
этот код равносилен
{
if(case1) {}
if(case2) {}
if(case3) {}
if(caseN) {}
}

Хекс
23.07.2018
21:51:17
а если ни а ни б
а если и а и б
а если а и ц

Vladislav
23.07.2018
21:51:49
в том то и дело что вен тебя тут только ограничивает т.к. надо следить за порядком _)

Хекс
23.07.2018
21:53:03
почему ограничивает. общий для всего код до вена, общий для группы условий в первом, внутри дополнительные условия. что не так?
а просто перечисление ифов даже без элсов заставляет по каждому пробегаться и дублировать код там где надо

Vladislav
23.07.2018
21:54:38
вот в этом вот _)
а если ни а ни б
а если и а и б
а если а и ц

Хекс
23.07.2018
21:55:48
ну, при множетсве комбинаций и разном поведении при разных комбинациях то конечно
а если можно выделить группы условий и быть уверенным что это не будет разрастаться в дерево венов, то достаточно двухуровневой проверки условий, то есть when + внутренний when или if

Orhan
24.07.2018
07:13:41
Норм практичный курс по Android
https://www.youtube.com/playlist?list=PLyVnb2byWwpl4ykCp1aDIH0gjVzMIxAtV

Tepex
24.07.2018
10:49:33
Добрый день! Подскажите - как вернуть значение из лямбды? Попробовал вот такой код, но он не компилируется (Unresolved reference: myLocalLabel):
this.gmap!!.setOnMyLocationButtonClickListener(@myLocalLabel{
onClickMyLocation()
return@myLocalLabel true
})
В setOnMyLocationButtonClickListener должен передаваться интерфейс:
interface GoogleMap.OnMyLocationButtonClickListener {
fun onMyLocationButtonClick(): Boolean
}

NewAge
24.07.2018
11:19:22


Tepex
24.07.2018
11:31:23
Добрый день! Подскажите опытные люди, как изящней написать это на Kotlin?
private boolean empty;
private List list;
...
if(list == null || list.size() == 0) empty = true;
else empty = false;

Google

Quantum Harmonizer
25.07.2018
09:41:09

Tepex
25.07.2018
09:55:40
List - как пример. Вместо него может быть любой другой nullable-объект

Dmytro
25.07.2018
10:04:13

Челодой
25.07.2018
10:09:10

Tepex
25.07.2018
10:10:10
Ясно, спасибо! Kotlin только осваиваю — вот и «детские» вопросы. Написал как есть:
if(list == null || list?.size() == 0) empty = true
else empty = false

Dmytro
25.07.2018
10:11:11

Tepex
25.07.2018
10:25:38
И еще вопрос: некая функция fun myFun(context: Context) принимает в качестве аргумента NonNull значение (это Android). Я вызываю эту функцию и контекст получаю из какого-нибудь SDK-метода, который по сигнатуре может и null (хотя я 100% уверен, что не null). На что компилятор справедливо ругается: Type mismatch: inferred type is Context? but Context was expected
Допустимо ли писать так: myFun(context!!) или это не айс?

Quantum Harmonizer
25.07.2018
10:26:07
вроде больше ничего не остаётся

Tepex
25.07.2018
10:34:43
Ясно, спасибо!

Челодой
26.07.2018
17:32:53
Всем привет. Есть вот такой метод. Суть в том что, мне надо сперва получить токен, а потом используя этот токен сделать запрос. Но как бы не пробовал, все равно сперва посылается запрос, а потом уже получаю токен. Как можно решить эту проблему?
launch(UI) {
try {
var token = ""
FirebaseInstanceId.getInstance().instanceId.addOnCompleteListener { result ->
token = result.result.token
}
val result = withContext(DefaultDispatcher) {
authInteractor.requestAccess(token)
}
when (result) { /* some stuff */}
} catch (e: Exception) { /* handle exception*/ }
}

Quantum Harmonizer
26.07.2018
17:35:47
придётся научиться пользоваться колбэками

Челодой
26.07.2018
17:54:46

Grushin
28.07.2018
17:24:39
с скажите, в андроиде же котлин компилируется как обычно? (в кишках)
как я понял вместо aapt орудует kapt. И это единственное отличие?

Quantum Harmonizer
28.07.2018
18:43:33

Денис
31.07.2018
08:29:32
Добрый день. Есть задача отформитировать Float, так чтобы после запятой было два знака.
profileMagicPoints = DecimalFormat("#########.##").format(userInfo.magicPoints)
Но дело в том, что количество знаков до запятой заранее неизвестно.
Я захардкодил 9 знаками, но мне это не нравится. Можно как-то красивее это сделать? Заранее спасибо.

Roman
31.07.2018
08:56:49

Денис
31.07.2018
09:00:39

Google

Денис
31.07.2018
09:00:40
val decimalFormat = DecimalFormat("#.##")
decimalFormat.roundingMode = RoundingMode.CEILING
profileMagicPoints = decimalFormat.format(userInfo.magicPoints)

Tantsura
31.07.2018
13:12:21
Привет всем, у меня слегка оффтопный вопрос повсей видимости. Стоит ли изучать котлин без знаний джавы с бэкграундом в джаваскрипте? Или все же лучше начать с джавы и потом плавно перейходить на котлин

Tepex
31.07.2018
13:17:33
Думаю, что можно и нужно (опыт Java > 15 лет)

Владислав
31.07.2018
13:18:20
:D