
Иван
23.08.2018
20:27:25
Это kotlin/java
Добавляет в байт-код названия параметров
Чтобы потом рефлексией можно было вытащить их

Bogdan
23.08.2018
20:28:26
оу котлин затерает мена

Google

Bogdan
23.08.2018
20:29:27
но все равно странно, чего во втором случае рабтало

Иван
23.08.2018
20:30:41
spring boot 1.5.12

Bogdan
23.08.2018
20:31:08

Иван
23.08.2018
20:31:29
Да не важно. java тоже затирает

Bogdan
23.08.2018
20:31:35
если есть возможность я бы перешел бы на 2-ой бутт и 5 спринг

Иван
23.08.2018
20:32:07
есть

Bogdan
23.08.2018
20:32:11

Иван
23.08.2018
20:51:14
А скоро там in-line классы?
Правильно я понимаю, что они избавят от таких штук?
data class ItemId(val value: String)

Alexander
23.08.2018
21:02:36

Иван
23.08.2018
21:11:50
ItemId(“qwe”).toString() == “qwe”?

Google

Alexander
23.08.2018
21:13:06
А, хотя нет
same as data classes
Тогда будет для начала название inline класса

Alexandr
24.08.2018
02:28:02

Sergey
24.08.2018
04:50:10
https://github.com/Kotlin/kotlinx.coroutines/issues/261
вот тут подробнее описано
получается мои костыли с каналами и акторами для подобного можно будет тоже выпилить, т.к это все на контекстах делается
пока немного странно работает
val pool1 = ExperimentalCoroutineDispatcher().blocking(2)
val pool2 = ExperimentalCoroutineDispatcher().blocking(2)
в итоге не переиспользует воркеров, а создает новые потоки ?


Nick
24.08.2018
11:33:57
Кто-нибудь писал скрипты на котлине? Скиньте примеры, если есть такие

Quantum Harmonizer
24.08.2018
11:35:02

Nick
24.08.2018
11:35:57
Благодарочка

Машков
24.08.2018
11:58:33
@Enleur следует получать blocking из одного и того же диспатчера так как blocking(n) возвращает лишь некий прокси к оригинальному диспатчеру
val dispatcher = ExperimentalCoroutineDispatcher()
val blockingPool1 = dispatcher.blocking(2)
val blockingPool2 = dispatcher.blocking(2)
Так что все потенциально блокирующие задачи испольняете на blocing диспатчерах, а чисто-асинхронные на оригинальном
В планах сделать DefaultContext таким корневым диспатчером. Тогда там будут переиспользоваться потоки. Но если вы создаёте диспатчер руками, то у него будут свои потоки.

Andrey
24.08.2018
12:00:18
Добрый день. Есть ли возможность вызывать extension методы как static из kotlin?
Из Java top level extension вызываются как static:
exts/FooExt.kt
package exts
import Foo
fun Foo.foo() = "qaz"
SpreadJ.java
import exts.FooExtKt;
public class SpreadJ {
public static void main(String[] args) {
Bar bar = new Bar();
System.out.println(FooExtKt.foo(bar));
}
}

Bogdan
24.08.2018
12:01:50

Sergey
24.08.2018
12:03:01

Andrey
24.08.2018
12:04:55

Google

Машков
24.08.2018
12:05:43
@Enleur почти наверняка будет, но пока не ясно когда именно это случится

Sergey
24.08.2018
12:05:48
и я так понимаю в планах CIO сервер для ktor тоже пустить через общий диспатчер?

Sergey
24.08.2018
12:06:16
может кто-то дать наводку на документацию по корутинам по следующему вопросу:
fun foo(): Int = 42
переходит в kotlin-байткод
public final static foo()I
Но,
suspend fun bar(): Int = suspendCoroutine { 42 }
переходит в
public final static bar(Lkotlin/coroutines/experimental/Continuation;)Ljava/lang/Object;
Почему return type не Integer?

Sergey
24.08.2018
12:06:44
потому что по факту калбек вернуло

Машков
24.08.2018
12:09:07
@Enleur это пока точно неизвестно, возможно по-прежнему будет свой диспатчер на экземпляр сервера. Думаю, это не будет проблемой

Sergey
24.08.2018
12:10:09
понял, спасибо)

Alexander
24.08.2018
12:16:40

Bogdan
24.08.2018
12:18:44

Alexander
24.08.2018
12:20:45
Может быть. Может там и не нужен JvmStatic. Я помню, что я это делал

Bogdan
24.08.2018
12:21:37

Andrey
24.08.2018
12:22:01
Можно, если в котлине он помечен как JvmStatic
Что-то у меня не получается:
exts/FooExt.kt
package exts
import Foo
object FooExt {
@JvmStatic
fun Foo.foo() = "qaz"
}
Spread.kt
import exts.FooExt
fun main(args: Array<String>) {
val bar: Foo = Bar()
println(bar.foo())
println(bar.bar())
FooExt.foo(bar) // здесь не компилится
}
interface Foo {
fun foo(): String
}
class Bar: Foo {
override fun foo(): String = "foo"
}
fun Foo.bar() = foo() + "bar"
Да, примеры синтетические, исключительно для тестирования ограничений языка

Boris
24.08.2018
12:24:10
По аналогии с лямбдами, можно было бы сделать возможность вызвать экстеншн передавая this первым параметром

Alexander
24.08.2018
12:24:23
работает без JvmStatic

Andrey
24.08.2018
12:24:58

Bogdan
24.08.2018
12:25:19

Andrey
24.08.2018
12:27:04

Quantum Harmonizer
24.08.2018
12:27:09

Admin
ERROR: S client not available

Alexander
24.08.2018
12:27:19
Я про это и говорю

Google

Alexander
24.08.2018
12:27:22
Топ левел
Если не топ левел, то нужен JvmStatic

Vlad
24.08.2018
12:27:41
всем привет, можно ли в котлине что-то типа List<String>::class.java

Quantum Harmonizer
24.08.2018
12:27:48
хотя, там статик стоит на неком foo

Andrey
24.08.2018
12:29:26

Bogdan
24.08.2018
12:29:41

Alexander
24.08.2018
12:29:48
Не обязательно статик. member extensions работают так же

Quantum Harmonizer
24.08.2018
12:31:17

Bogdan
24.08.2018
12:31:25

Alexander
24.08.2018
12:32:00
Если она статическая то да.

Bogdan
24.08.2018
12:32:12
котлин ее в упор не видит

Alexander
24.08.2018
12:32:23
Топ левел или в классе?
Топ левел только что проверил - видит

Bogdan
24.08.2018
12:32:34
и та к и так

Alexander
24.08.2018
12:32:51
может чего-то путями...

Bogdan
24.08.2018
12:33:08

Google

Andrey
24.08.2018
12:40:52

Quantum Harmonizer
24.08.2018
12:41:09

Andrey
24.08.2018
12:41:41

Quantum Harmonizer
24.08.2018
12:41:59
кажется, если есть мембер, экстеншен недостижим)

Bogdan
24.08.2018
12:42:01