
Quantum Harmonizer
22.08.2017
20:46:05

Андрей
22.08.2017
20:47:22
Три таска сделали свою работу и дернули на баръере await(). После этого баръер запускает задачу, которую ему передали вторым аргументом конструктора.

Anton
22.08.2017
20:48:20
блин еще вопрос как называется штука которая чем то похожа на goto только показывает из какой зоны видимости функции выйти
в джаве тож есть

Google

Anton
22.08.2017
20:48:37
ну типа куда return вернет

Андрей
22.08.2017
20:48:48
это на циклах метки которые (label)?

Anton
22.08.2017
20:48:51
дада
я забыл название и не могу найти

Quantum Harmonizer
22.08.2017
20:50:18
labeled returns

Anton
22.08.2017
20:50:25
sps)

Андрей
22.08.2017
20:52:17
Тут есть про ретурн и брейк с лейблой. https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

Anton
22.08.2017
20:52:55
их же можно использовать чтобы из лямбды выйти?

Quantum Harmonizer
22.08.2017
20:53:15
вроде
там что-то было не доделано — кажется, break, continue, etc

Anton
22.08.2017
20:54:45
хм чет я туплю на ночь. вот допустим
executor.submit{
// что то произошло и я хочу выйти из лямбды целиком и вообще shutdown вызвать
}
блин а вот если у меня один из трех тредов будет прерван то барьер сработает?

Google

Quantum Harmonizer
22.08.2017
20:57:07
А что значит «прерван»? Исключение бросишь?

Андрей
22.08.2017
20:57:22
из инлайновой
из лямбды http://kotlinlang.org/docs/reference/returns.html#return-at-labels

Anton
22.08.2017
20:57:33
да я хз могу и бросить я не знаю даже как лучше.
ну вот допустим какое то условие начальное не выполнилось и я не хочу дальше ничего делать
что я должен вызывать? shutdownnow вообще весь эксекьютор вырубит
но притом я хочу чтобы барьер сработал

Андрей
22.08.2017
21:01:44
Говоришь из треда барьеру что закончил свое выполнение, а он дальше сам разберется

Anton
22.08.2017
21:05:17
тоесть await вызываю

Андрей
22.08.2017
21:05:25
да

Anton
22.08.2017
21:05:46
спасибо
всем)
пацаны а _перед именем переменной в параметрах в качестве замены this.val = val это по конвешншену же?
или мне приснилось

Михаил
23.08.2017
11:23:49

Anton
23.08.2017
11:23:56
в свифте так тоже
вроде
вроде в kotlin in action такое было

Михаил
23.08.2017
11:26:24
тут про это ничего не написано

Anton
23.08.2017
11:26:53
блин ну не приснилось же((

Google

Anton
23.08.2017
11:26:55
ща

Михаил
23.08.2017
11:28:27

Anton
23.08.2017
11:29:54


Dmitry
23.08.2017
12:33:08
народ, есть вопрос
class TestTimerCoroutine {
@Test
fun test1() {
timer(
name = "timer",
period = 10
) {
async(CommonPool) {
val msg = suspendFunction()
}
}
}
suspend fun suspendFunction(): String = "hello"
}
=>
Exception in thread "timer" java.lang.VerifyError: Bad type on operand stack
Exception Details:
Location:
tsyd/TestTimerCorutine$test1$$inlined$timer$1$lambda$1.create(Lkotlinx/coroutines/experimental/CoroutineScope;Lkotlin/coroutines/experimental/Continuation;)Lkotlin/coroutines/experimental/Continuation; @6: invokespecial
Reason:
Type 'tsyd/TestTimerCorutine$test1$$inlined$timer$1$lambda$1' (current frame, stack[3]) is not assignable to 'tsyd/TestTimerCorutine$test1$$inlined$timer$1'
Current Frame:
bci: @6
flags: { }
locals: { 'tsyd/TestTimerCorutine$test1$$inlined$timer$1$lambda$1', 'kotlinx/coroutines/experimental/CoroutineScope', 'kotlin/coroutines/experimental/Continuation' }
stack: { uninitialized 0, uninitialized 0, 'kotlin/coroutines/experimental/Continuation', 'tsyd/TestTimerCorutine$test1$$inlined$timer$1$lambda$1' }
Bytecode:
0x0000000: bb00 0259 2c2a b700 624e 2d2b b500 3c2d
0x0000010: 3a04 1904 b0
at tsyd.TestTimerCorutine$test1$$inlined$timer$1.run(Timer.kt:145)
at java.util.TimerThread.mainLoop(Timer.java:555)
at java.util.TimerThread.run(Timer.java:505)
что не так в коде?


Quantum Harmonizer
23.08.2017
12:34:45

Dmitry
23.08.2017
12:35:23
вот и я так думаю

Quantum Harmonizer
23.08.2017
12:36:11

Dmitry
23.08.2017
12:36:48
котлин 1.1.4. kotlinx-coroutines-core 0.16
вот буду проверять
даже 1.1.4-2

Quantum Harmonizer
23.08.2017
12:38:50
даже 1.1.4-2
если повторится и с 1.2-M2, то надо заводить багу на kotl.in/issue

Igor
23.08.2017
12:39:41

Dmitry
23.08.2017
12:40:01
это не андроид

Igor
23.08.2017
12:40:29
А kapt не только под android

Dmitry
23.08.2017
12:41:00
не юзаю
вынес лябмду из таймера в отдельный метод - заработало

Denis
24.08.2017
08:53:43
public infix fun and(other: Boolean): Boolean
это & или && ?

Google

DarkMentat
24.08.2017
08:55:08
По моему &&. Для булинов же нет побитовых приколов?

Sergey
24.08.2017
08:55:08
bitwise and
а нет
/**
* Performs a logical `and` operation between this Boolean and the [other] one. Unlike the `&&` operator,
* this function does not perform short-circuit evaluation. Both `this` and [other] will always be evaluated.
*/
public infix fun and(other: Boolean): Boolean

Quantum Harmonizer
24.08.2017
08:56:51

Denis
24.08.2017
08:59:09
&
получается менее оптимально, чем && ?

Quantum Harmonizer
24.08.2017
08:59:47
ну и a != null and a.whatever != null — небезопасно

Михаил
24.08.2017
09:04:02
&
Разве он в котлине вообще есть?

Dmitriy
24.08.2017
09:05:40
and == & (побитовое и)

DarkMentat
24.08.2017
09:09:23
самого оператора в языке нет

Vladimir
24.08.2017
09:17:00
&& возвращает false, не вычисляя правый операнд, если левый равен false. Как вы себе представляете его работу, когда левый операнд - это непонятный объект?
and работает как &, которого в котлине нет

Назаров
24.08.2017
09:23:54
Кто встречался с этой проблемой?
Всем привет
Как я понял, ему этот участок не нравится

Vladimir
24.08.2017
09:26:44
Может, у компилятора крышу снесло от ru.gdz.data.model.Class?

Назаров
24.08.2017
09:27:38
Да он работал нормально)
Это же не тот который из java.lang

Vladimir
24.08.2017
09:30:24
Ну Back-end (JVM) Internal error - это в любом случае баг в компиляторе. Вопрос только в том, исправлен ли он уже, и как его обойти.

Google

Назаров
24.08.2017
09:32:20
Понял, спасибо

Tipok
24.08.2017
11:14:04
private val backClickListener: () -> Unit - это параметр функции, можете привести пример, какой объект туда можно передать?

Михаил
24.08.2017
11:14:55
{} , например
:)

Tipok
24.08.2017
11:22:39
вот допустим конструктор класса:
class BackPressedToolbarPlugin(
delegate: AppCompatActivity,
private val backClickListener: () -> Unit,
@StringRes titleRes: Int = 0,
title: String? = null) : ToolbarPlugin(delegate, titleRes, title)
Создаем переменную:
var smth: ???
и пробрасываем её в конструктор
BackPressedToolbarPlugin(..., smth,...) как будет smth выглядеть, можно поподробнее, не пойму чет)

Михаил
24.08.2017
11:25:49
var smth: () -> Unit

Михаил
24.08.2017
11:26:05
val smth = { }

Михаил
24.08.2017
11:26:21
var smth: () -> Unit = {
// do something
}

Михаил
24.08.2017
11:26:27
Обычная лямбда

Tipok
24.08.2017
11:32:44
Спасибки

Pavel
24.08.2017
11:49:08
А есть возможность приостанавливать работу корутины, а в дальнейшем возобновлять ее работу. Без ввода флагов