@kotlin_lang

Страница 824 из 982
Иван
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
spring boot 1.5.12
а там полной подержки котлина нет

Иван
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
Да не важно. java тоже затирает
да я о томже, надо будет потестить, интересно стало

Иван
23.08.2018
20:51:14
А скоро там in-line классы?

Правильно я понимаю, что они избавят от таких штук? data class ItemId(val value: String)

Alexander
23.08.2018
21:02:36
Правильно я понимаю, что они избавят от таких штук? data class ItemId(val value: String)
От конструкций не избавит, скорее от реального оборачивания объектов. Подробнее пока что тут: https://github.com/Kotlin/KEEP/blob/master/proposals/inline-classes.md

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

Google
Alexander
23.08.2018
21:13:06
ItemId(“qwe”).toString() == “qwe”?
https://github.com/Kotlin/KEEP/blob/master/proposals/inline-classes.md#methods-from-kotlinany Согласно этой спеке, да.

А, хотя нет

same as data classes

Тогда будет для начала название inline класса

Alexandr
24.08.2018
02:28:02
тогда поидее вообще бы не работало, и смысл аннотаций 0
Аннотации не затираются, исчезает информация с именем аргумента метода. Раньше её вообще не было, поэтому в аннотации имя указывали явно

Sergey
24.08.2018
04:50:10
Я честно говоря пока не понял в чем большое приемущество нового IO перед простым cachedThreadPool https://github.com/Heapy/tgto/blob/master/src/main/kotlin/app/hea/tgto/coroutines/Contexts.kt#L36 сс @relizarov
штука в том что там щас добавляют эксперементальный диспатчер. так вот IO и основной диспатчеры не имеют своих отдельных потоков и юзают один пул, только основной диспатчер лимитирует параллельное выполнение тасков кол-ву ядер, а IO может запросить создание нового потока в общем профит в том что IO по возможности будет юзать треды из основного пула на сколько я понял, но могу ошибаться?

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
Кто-нибудь писал скрипты на котлине? Скиньте примеры, если есть такие
мой комнатный webpack https://github.com/JavaneseOnline/JavaneseBackend/blob/master/src/main/resources/combine.kts

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)); } }

Andrey
24.08.2018
12:04:55
а зачем ? Даже не задумывался
Ну например, чтобы вызвать extension, если он перекрыт member методом

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
понял, спасибо)

Bogdan
24.08.2018
12:18:44
Можно, если в котлине он помечен как JvmStatic
вроде только компаньйона можно помечать

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
работает без JvmStatic
только вне класса, где котлин добровольно генерит статические методы

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
Ну с точки зрения байт кода он и так static: public final static foo(LFoo;)Ljava/lang/String;
ну а с точк зрения яп, статика нет, так что все нормально что он его не находит

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

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
with(fooExt) { foo.foo() }
Нет, так вызовется member, если он есть у foo, а не экстеншн

Quantum Harmonizer
24.08.2018
12:41:09
Нет, так вызовется member, если он есть у foo, а не экстеншн
экстеншеном нельзя перекрыть мембер

Andrey
24.08.2018
12:41:41
экстеншеном нельзя перекрыть мембер
Я не про перекрыть, я скорее про qualified вызов екстеншена.

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

Bogdan
24.08.2018
12:42:01
экстеншеном нельзя перекрыть мембер
вот человек хочет вызывать Класс.метод(ресивер)ж

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