
Andrew
23.07.2018
10:09:56

Евгений
23.07.2018
10:13:09
JVM-ный плагин подключается в основном файле build.gradle т.к. котлин во всех модулях (subproject-е), а kotlin2js толко в одном
я так понимаю идея дрянь подключать плагины в общем build.gradle
или kotlin2js включает в себя JVM-ный плагин?

Google

Alexander
23.07.2018
10:16:05
идея нормальная, если они везде используются. Jvm плагин и js плагин - это две большие разницы. Вместе в одном модуле они жить не могут
Там немножео другая архитектура, если использовать многомодульную сборку, но там и плагин другой

Mikhail
23.07.2018
10:17:23
ребят, подскажите, как подсмотреть как реализован equals в таком случае
class Foo {
fun bar() {}
fun baz() {}
}
val foo = Foo()
print(foo::bar == foo::bar) // true
print(foo::baz == foo::bar) // false

Alexander
23.07.2018
10:17:38
тьфу, я имел в виду многоплатформенную

Евгений
23.07.2018
10:17:48
хм, но ведь этот модуль содержит лишь DTO-хи, которые используются в JS и на сервере
и поэтому типа компилим его и в JS и просто
и пару лет назад все работало)

Alexander
23.07.2018
10:18:30
Там плагин вообще другой: https://kotlinlang.org/docs/reference/multiplatform.html

Mikhail
23.07.2018
10:19:45
сам удивлен, что работает

Alexander
23.07.2018
10:20:17
обычные, foo::bar - это функциональный объект, указывающий на метод класса. Сравниваются они по ссылке

Quantum Harmonizer
23.07.2018
10:20:23

Google

Quantum Harmonizer
23.07.2018
10:20:30

Konstantine
23.07.2018
10:21:05
Могу ли я написать обычную функцию (fun), которую можно прокинуть в Rx цепочку для обработки?
Если да, скинь пожалуйста пример.

Mikhail
23.07.2018
10:21:49
а почему нет?
я бы остерегался использовать слово "указатель" при работе с java/kotlinjvm

Alexander
23.07.2018
10:22:08
Хорошо, reference

Mikhail
23.07.2018
10:22:23
identity
неа, foo::bar === foo::bar дает false

dimiii
23.07.2018
10:22:42
Интересно, я что-то не нахожу строго-го формального описания семантики method reference

Quantum Harmonizer
23.07.2018
10:23:07

Alexander
23.07.2018
10:23:19
Function references, оно так в официальной документации и называется
https://kotlinlang.org/docs/reference/reflection.html#bound-function-and-property-references-since-11

Alexey
23.07.2018
10:24:50

Quantum Harmonizer
23.07.2018
10:25:00

Alexander
23.07.2018
10:25:06
Не, там не лямбды

Quantum Harmonizer
23.07.2018
10:25:31
лямбда — это такая штука с полужирными фигурными скобками и опциональной стрелкой

Alexey
23.07.2018
10:25:37
Кек, а как по вашему можно получить ссылку на метод объекта?

Quantum Harmonizer
23.07.2018
10:25:52

Alexander
23.07.2018
10:25:54
Там получаются инстансы KFunction, но не те же самые, что из лямбд делаются

Alexey
23.07.2018
10:26:42
Нууу, sam для jvm8 скомпилится в static lambda
так что я хз

Konstantine
23.07.2018
10:27:20

Quantum Harmonizer
23.07.2018
10:27:27

Google

Mikhail
23.07.2018
10:36:41

Alexander
23.07.2018
10:42:02
это бага.

Алексей
23.07.2018
17:30:57
Всем привет возник интересный вопрос про универсальную функцию. Есть 2 класса.
class A(){
var a: Int=0
}
class B(){
var b: Int=0
}
Вопрос такой: как написать универсальную функцию которая будет увеличивать значение в поле экземпляра ккласса независимо от того какого класса аргумент функции?
Нужно что то вродее этого (далее псевдокод чтобы показать что мне нужно сделать):
fun plusOne(somethingObject: SomethingClass){
somethingObgect.field++
return something
}
Да и можно ли так сделать в принципе?

Konstantine
23.07.2018
17:33:05
Сделать их потомками одного класса или интерфейса, в котором будет объявлено это поле.

Алексей
23.07.2018
17:33:30
Это да, а еще какие-то варианты

Bogdan
23.07.2018
17:34:04

Алексей
23.07.2018
17:35:51
Да про оператор :: я читал, но не понял как его тут можно применить

dimiii
23.07.2018
17:36:21
Это да, а еще какие-то варианты
Лойс.
>будет увеличивать значение в поле экземпляра ккласса независимо от того какого класса аргумент функции?
Дословно звучит как определение полифморфизма. Какие еще варианты? )
A: Countable
B: Countable

Bogdan
23.07.2018
17:36:36

Alexander
23.07.2018
17:36:53

Alexander
23.07.2018
17:37:55
Собственно ссылка на свойство - это тоже рефлекты, но оно тут не поможет. Для того, чтобы его вызвать, нужно иметь тип вызываемого объекта, для произвольного типа это сделать нельзя

dimiii
23.07.2018
17:38:11
Возможности AspectJ еще приходит в голову, но это того же рода извращения, что и рефлексия

Alexander
23.07.2018
17:38:13
Если что, это называется duck typing и Groovy это отлично умеет

Алексей
23.07.2018
17:38:37
Все понятно, буду делать тогда с помощью средств ООП, думал вдруг кто знает какие прибамбасы)

Alexander
23.07.2018
17:39:10
Кстати, есть довольно положительный опыт мешания в один проект java, groovy и kotlin, так что ничего нелегального тут нет.

Anton
23.07.2018
17:39:31
у нас тоже так. но груви только в тестах)

dimiii
23.07.2018
17:39:59

Quantum Harmonizer
23.07.2018
17:40:01

Google

Alexander
23.07.2018
17:40:01
У меня груви в пользовательской консоли.

Алексей
23.07.2018
17:41:09

Admin
ERROR: S client not available

Alexander
23.07.2018
17:41:43

dimiii
23.07.2018
17:42:09
Предвкушаю появление sealed class

Quantum Harmonizer
23.07.2018
17:42:42

Alexander
23.07.2018
17:42:49
хде. В дискуссии? Вряд ли, вариант с наследованием был отвергнут

Quantum Harmonizer
23.07.2018
17:42:54
но вообще это дичь, а изменяемые объекты чаще вредны

Bogdan
23.07.2018
17:43:02

Quantum Harmonizer
23.07.2018
17:43:15

Алексей
23.07.2018
17:43:24

Quantum Harmonizer
23.07.2018
17:43:33
Это лёгкая рефлексия. Не прон а эротика ?

Bogdan
23.07.2018
17:43:48

Alexander
23.07.2018
17:43:54
Ну это не то чтобы совсем рефлексия, рефлексия в том месте, где этот проперти получается. Так это просто набор геттера и сеттера
В рефлексии нет ничего крименального , пока не начинаешь ее везде вставлять

Quantum Harmonizer
23.07.2018
17:44:26
Спасибо
очень надеюсь, что это было proof of concept

dimiii
23.07.2018
17:44:33
Спасибо
Скажи, ты остановился на этом варианте, и почему если так?

Quantum Harmonizer
23.07.2018
17:44:44

Google

Alexander
23.07.2018
17:44:48

Алексей
23.07.2018
17:45:43
Не надо так делать.
Ладно не буду) Просто интересно было можно ли такое сделать с помощью средств языка

Alexander
23.07.2018
17:45:49
Скала по-моему вообще все позволяет, но она есть два метра колючей проволоки.

Bogdan
23.07.2018
17:50:56

Quantum Harmonizer
23.07.2018
17:51:36

Alexander
23.07.2018
17:52:21
Нуууу... совсем не использовать - это добровольно себе ногу отпиливать. Кое-где оно все-таки очень полезно.
Любой процессинг аннтоаций тоже

Quantum Harmonizer
23.07.2018
17:53:21

Alexander
23.07.2018
17:54:27
Ну в классическом понимании слова, это когда мы к примеру пытаемся получить список методов класса в рантайме. Или вызвать конструктор (или другой метод) напрямую.

Bogdan
23.07.2018
17:54:34