@kotlin_lang

Страница 290 из 982
Quantum Harmonizer
22.08.2017
20:46:05
Ну так вроде это и требовалось?
вообще да, как вариант — запостить оттуда задачу на main.

Андрей
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 это по конвешншену же?

или мне приснилось

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
вроде в kotlin in action такое было
Было. Так местами backing field помечаются

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
вот и я так думаю
какая версия Котлина? Как ведут себя 1.1.4 и 1.2-M2 с этим кодом?

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

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
А есть возможность приостанавливать работу корутины, а в дальнейшем возобновлять ее работу. Без ввода флагов

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