
Alexander
03.07.2018
15:19:21
Есть конечно скала, но это вообще два метра колючей проволоки.

Mikhail
03.07.2018
15:20:13
кто-то говорит, что код превращается в набор ASCII символов, но в некоторых случаях код становится читаемее, потому что данные визуально хорошо отличаются от операторов
я б сделал чтобы можно было добавить оператор, но при этом у метода должно быть имя

Google

Alexander
03.07.2018
15:21:10
Не понял

Andrey
03.07.2018
15:21:57

Mikhail
03.07.2018
15:21:57
что то вроде @Operator("|>") fun <T> T.pipe(f: (T)->R):R = f(this)

dimiii
03.07.2018
15:22:01

Mikhail
03.07.2018
15:22:50

Alexander
03.07.2018
15:23:46
и не понятно, чем это хуже инфиксных функций

Igor
03.07.2018
15:24:42

Alexander
03.07.2018
15:26:04
Чего-то я обнаружил какую-то аномалию. На вызов KProperty::isAccessible выкидывается java.lang.ClassNotFoundException: org.jetbrains.kotlin.name.ClassId. Это как?
При чем сам этот ClassId даже не в рефлектах живет, а в ядре

dimiii
03.07.2018
15:27:52

Andrey
03.07.2018
15:28:11

Google

Alexander
03.07.2018
15:28:20
Класслодер не совсем правый, но он наследован от основного, причем остальные классы как-то работают

dimiii
03.07.2018
15:29:18

Alexander
03.07.2018
15:29:25

Quantum Harmonizer
03.07.2018
15:29:42

Igor
03.07.2018
15:29:50

Alexander
03.07.2018
15:30:14

Andrey
03.07.2018
15:30:25

Quantum Harmonizer
03.07.2018
15:30:45
в смысле?
ClassNotFoundException — это следствие рефлексии.

Alexander
03.07.2018
15:31:18
Естественно, если я с пропертями работаю, то это уже в рефлексии. Я не понимаю, почему такая странная ошибка
Ошибка выкидывается на корневом класслоадере

Quantum Harmonizer
03.07.2018
15:32:59
не, именно джавовой рефлексии

Alexander
03.07.2018
15:33:00
В общем, мистика
Да. Сейчас стак трейс скину

Andrey
03.07.2018
15:33:49


Alexander
03.07.2018
15:35:14
java.lang.ClassNotFoundException: org.jetbrains.kotlin.name.ClassId
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl.parseType(KDeclarationContainerImpl.kt:271)
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl.loadReturnType(KDeclarationContainerImpl.kt:286)
at kotlin.reflect.jvm.internal.KDeclarationContainerImpl.findMethodBySignature(KDeclarationContainerImpl.kt:214)
at kotlin.reflect.jvm.internal.KPropertyImplKt.computeCallerForAccessor(KPropertyImpl.kt:237)
at kotlin.reflect.jvm.internal.KPropertyImplKt.access$computeCallerForAccessor(KPropertyImpl.kt:1)
at kotlin.reflect.jvm.internal.KPropertyImpl$Getter$caller$2.invoke(KPropertyImpl.kt:157)
at kotlin.reflect.jvm.internal.KPropertyImpl$Getter$caller$2.invoke(KPropertyImpl.kt:148)
at kotlin.reflect.jvm.internal.ReflectProperties$LazySoftVal.invoke(ReflectProperties.java:93)
at kotlin.reflect.jvm.internal.ReflectProperties$Val.getValue(ReflectProperties.java:32)
at kotlin.reflect.jvm.internal.KPropertyImpl$Getter.getCaller(KPropertyImpl.kt)
at kotlin.reflect.jvm.ReflectJvmMapping.getJavaMethod(ReflectJvmMapping.kt:62)
at kotlin.reflect.jvm.ReflectJvmMapping.getJavaGetter(ReflectJvmMapping.kt:47)
at kotlin.reflect.jvm.KCallablesJvm.isAccessible(KCallablesJvm.kt:46)
Причем этот метод обычно работает нормально. Но в одном конретном случае ломается
Вообще какая-то фантастика. Метод несколько раз вызвывается нормально при одних и тех же условиях, а потом на чем-то крэшится. Это жж не спроста


dimiii
03.07.2018
15:42:40
Пальцем в небо - java.net.URLClassLoader.findClass(URLClassLoader.java:381) - ресурс не берется с директории от примонтированной nfs?

Alexander
03.07.2018
15:45:25
Да нет, все вообще абсолютно гламурно и локально. Это похоже на какой-то злобный баг. Проблема в том, что я скорее всего не смогу выпилить его в отдельный пример

Google

Kirill
03.07.2018
16:11:27
очень важный(на самом деле нет) вопрос:
у вас есть строки a и b.
вы хотите получить "$a $b", но только если b не пустая. иначе вам нужна a
есть ли в стдлибе функция которая это умеет делать? О_О
мне надоело писать a + b.let{ if(it.isNotEmpty()) " $it" else "" }
(свою util функцию тоже не хочу писать)

Quantum Harmonizer
03.07.2018
16:12:56
но вообще да, я писал when для этого

dimiii
03.07.2018
16:13:17
if b.isNotEmpty() "$a $b" else "$a" )

Kirill
03.07.2018
16:13:23

Quantum Harmonizer
03.07.2018
16:13:41

Kirill
03.07.2018
16:13:42

dimiii
03.07.2018
16:14:12

Kirill
03.07.2018
16:14:24

Igor
03.07.2018
17:03:01

Sergey
03.07.2018
17:09:06
"$a $b".trim()

Andrew
03.07.2018
17:15:44

Kirill
03.07.2018
17:16:46

Andrew
03.07.2018
17:18:18
Тогда красиво :)

OlegKrikun
03.07.2018
17:45:30
ктонть вкурсе почему нету linkedListOf<>()? =)

Rikland
03.07.2018
17:46:05

OlegKrikun
03.07.2018
17:48:04
просто наколбасили методов по созданию разных колекций, но линкедлист как-то обошли стороной, стало интересно почему

Google

Kirill
03.07.2018
17:51:59

OlegKrikun
03.07.2018
17:52:02
он оказывается был, но в 1.0.0 RC его задепрекейтили
но тут я могу ошибацца

Kirill
03.07.2018
17:54:10

OlegKrikun
03.07.2018
17:54:10

Kirill
03.07.2018
17:54:26
А linked list обычно только а лабах нужен

OlegKrikun
03.07.2018
17:55:35

Boris
03.07.2018
20:21:47
А вот линкедлист это почти атавизм. Даже очередь на массивах неплохо работает
Мне кажется, что даже стдлиб котлина где-то использует линкедмэп когда в мапу трансформит, я правда сейчас не могу посмотреть наверняка

Quantum Harmonizer
03.07.2018
20:33:08

Boris
03.07.2018
20:34:00

Igor
03.07.2018
20:34:32
А про kotlinx.collections.immutable уже все забыли

Boris
03.07.2018
20:34:56
Не взлетели
Думаю это кто-то в итоге сделает приличной либой

OlegKrikun
03.07.2018
21:14:30
Я признаца сам тоже не юзаю линедлист (как впрочем и остальные линкед* - по крайней мере явно). Но вот код с которым мне приходится сейчас работать им полон

Kirill
03.07.2018
21:15:34

Maxim
03.07.2018
21:15:55

Google

OlegKrikun
03.07.2018
21:16:47

Костя
04.07.2018
10:03:20
добрый день, может кто знает ответ:
мне приходит в метод параметр type: Type? (java.lang.reflect), как я могу проверить что type == MyClass.kt
при проверке получаю ошибку
if (type is MyClass)
Incompatible types: Type? and MyClass
можно ли как-то проверять этот тип вообще ?
в java работало как-то так:
type.equals(MyClass.class)
вроде бы, но я точно сейчас это проверить не могу, но вроде тип проверить можно было так
о, похоже так работает
if (type == MyClass::class.java)
хм..

Alexander
04.07.2018
10:08:47
Это не баг, это фича. KClass не является наследником Type. Там надо взять от этого Type javaerasure, тогда все будет хорошо

Костя
04.07.2018
10:09:57
у type нет такого поля

Alexander
04.07.2018
10:10:01
а, стоп
Это я про KType

Костя
04.07.2018
10:10:08
это ж вообще интерфейс, считай пустой
хм
а как тут быть в моем варианте

Alexander
04.07.2018
10:10:27
https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Type.html
У вас чисто джавовская конструкция, MyClass::class.java - это то, что надо

Костя
04.07.2018
10:11:33
хм, похоже тогда дело в листе
а если List<MyClass>
как сравнить с type

Alexander
04.07.2018
10:12:06
Никак. Типы стариются в рантайме

Костя
04.07.2018
10:12:18
type == List::class.java это не проходит

Alexander
04.07.2018
10:12:35
Так лист может быть разный