
Mikhail
08.10.2018
18:53:39

eshch
08.10.2018
18:54:38

Руслан
08.10.2018
18:54:39

eshch
08.10.2018
18:54:46

Google

Руслан
08.10.2018
18:54:53
const val `∞` = true
fun main(args: Array<String>) {
while (`∞`) {
}
}
?

Quantum Harmonizer
08.10.2018
18:55:26

1337
08.10.2018
18:55:32
неплохо

Nameless
08.10.2018
18:55:35

Денис
08.10.2018
18:55:48

Dmitriy
08.10.2018
18:55:48
Скажите лучше почему Котлин не умеет в такое (потому что не java?)
val a=“123”
+ “456”
+ “789”

eshch
08.10.2018
18:56:05

Nameless
08.10.2018
18:56:08
val a=“123”+
“456” +
“789”
починил

Денис
08.10.2018
18:56:33

Dmitriy
08.10.2018
18:56:36

Google

eshch
08.10.2018
18:56:49

Mikhail
08.10.2018
18:56:51

Nameless
08.10.2018
18:56:57

Руслан
08.10.2018
18:57:03

Dmitriy
08.10.2018
18:57:06
Третью точнее

Nameless
08.10.2018
18:57:20

Денис
08.10.2018
18:57:21

Nameless
08.10.2018
18:57:25
а куда-же без $$

Alexander
08.10.2018
18:57:42

dimiii
08.10.2018
18:58:06

eshch
08.10.2018
18:58:16

Bogdan
08.10.2018
18:59:00
а если не докажу, значит ли это что там они не нужны?
у JB есть статистка сяких кейсов, и если нет необходимости в бесконечном цикле, то тогда зачем вводить это ? Это как установить программы и забыть про нее, а потом к тебе прийдет товарищь и спросить что-то сделать, а ты такой "тыж программист" - У меня есть спец прога для этого

Dmitriy
08.10.2018
18:59:14

Bogdan
08.10.2018
19:00:35
так что да - хотелка

Mikhail
08.10.2018
19:00:55
а почему решили?
потому что цитирую "_Very general note on language design_. Someone from C# design team, don’t remember who exactly told me about a principle I like very much. They start any feature/proposal/idea with the “-200 points”. That means, that unless there are at least 200 points _in favor_ of the feature, they don’t even start designing it. It’s arguable how much each argument/use case/etc adds to the pile, but in general, if you keep in mind that there are _no free features_ (not in terms of JetBrains investment, but in terms of burden added to the language, cost of learning, etc) and that you need to have a very compelling reason to introduce this or that, it makes discussions much more constructive. Just a note."

eshch
08.10.2018
19:01:01

dimiii
08.10.2018
19:01:50

Bogdan
08.10.2018
19:01:51

Google

eshch
08.10.2018
19:02:16

Mikhail
08.10.2018
19:02:22
вообще, @eshchetinin, можешь пойти в канал stdlib в slack и набросить. может найдутся те кто тебя поддержат

Bogdan
08.10.2018
19:02:30

Руслан
08.10.2018
19:02:37

Bogdan
08.10.2018
19:02:47

dimiii
08.10.2018
19:03:06

Igor
08.10.2018
19:05:48

eshch
08.10.2018
19:06:18

dimiii
08.10.2018
19:06:28

eshch
08.10.2018
19:06:30
но и тут хочу обсудить

Денис
08.10.2018
19:06:52

Igor
08.10.2018
19:07:19

Mikhail
08.10.2018
19:08:05
вообще, хочу scratch со встроенным jmh

dimiii
08.10.2018
19:09:45

Денис
08.10.2018
19:10:24
Когда язык пытается удовлетворить все хотелки всех пользователей (а "избавьте меня от 6 символов раз в 1к-10к строк в некоторых приложениях" - это хотелка, да, это не киллер-фича), получается С++, который в итоге целиком ~никто не знает, и все начинают программировать на малопересекающихся подмножествах языка. Это не очень хорошо и удобно и для языка, и для коммьюнити, и тем более для тулинга, на котором вообще-то JB, создатели Котлина, зарабатывают себе на хлеб с маслом (и икрой). Итого - да, такие мелочи того однозначно не стоят.

eshch
08.10.2018
19:10:39

Quantum Harmonizer
08.10.2018
19:11:06
охереть, вы до сих пор об этом!

Руслан
08.10.2018
19:11:12

Google

Денис
08.10.2018
19:13:07
(вопрос риторический, я солидарен с тем, что дискуссию пора заканчивать)

eshch
08.10.2018
19:17:01


Alexandr
09.10.2018
04:50:08
Подмен делегата через рефлексию имеет смысл, если делегат о куче методов/полей и пробрасывать их все руками тяжко. Нифига не безопасно и громоздко, но вот рабочий пример:
fun main(args: Array<String>) {
val proxy = TestProxy(TestData("old"))
println(proxy.name)
proxy.data = TestData("new")
println(proxy.name)
}
interface Test {
val name: String
}
class TestData(override val name: String) : Test
class TestProxy(data: Test) : Test by data {
var data: Test = data
set(value) {
delegateField.set(this, value)
field = value
}
companion object {
private val delegateField: Field by lazy {
val declaredFields = TestProxy::class.java.declaredFields
val field: Field = declaredFields.find { it.name.contains("\$\$delegate") }!!
field.isAccessible = true
val modifiersField = Field::class.java.getDeclaredField("modifiers")
modifiersField.isAccessible = true
modifiersField.setInt(field, field.modifiers and Modifier.FINAL.inv())
field
}
}
}
вот так проще:
interface Test {
val name: String
}
class TestData(override val name: String) : Test
class TestProxy(var data: Test) : Test by data {
init {
val declaredFields = TestProxy::class.java.declaredFields
val field: Field = declaredFields.find { it.name.contains("\$\$delegate") }!!
field.isAccessible = true
field.set(this, Proxy.newProxyInstance(TestProxy::class.java.classLoader, arrayOf(Test::class.java),
{ proxy, method, args -> method.invoke(data, *(args ?: arrayOf()))}))
}
}
fun main(args: Array<String>) {
val proxy = TestProxy(TestData("old"))
println(proxy.name)
proxy.data = TestData("new")
println(proxy.name)
}
выводит:
old
new


Bogdan
09.10.2018
04:50:45

Admin
ERROR: S client not available

Alexandr
09.10.2018
04:50:55
но производительность будет хуже

Bogdan
09.10.2018
04:57:29

Egor
09.10.2018
07:07:53


eshch
09.10.2018
07:26:13
Ты привел 1н яп, который е является показательным, скоторым сложно проводить грани, вот дарт хороший синтаксис приятный, но отсутствия нормально вывода типов меняет все, мне после котлина было не вмоготу. Привиди ходьбы 3-и кейса (а лучше 5-ть), где нужен такой цикл, ну и обосновать чего твой вариант будет предпочтительней. Вот только после этого тебя хоть немного выслушают.
я не считаю вообще примеры языков аргументом за самим по себе. могу еще три раза это написать. это всего лишь факт, явно имеющий отношение к вопросу, и потому требующий осмысления. числа 3, 5, 200 (последнее - из цитаты на английском выше) взяты с потолка, потому аргументами не являются.

Alexander
09.10.2018
07:37:29
Я фигею с этих русских. 300 сообщений накатали по такой бредовой теме.

Алексей
09.10.2018
07:40:03

Alexander
09.10.2018
07:40:59
обсуждали конструкцию для бесконечного цикла с синтаксисом while{...}
Декскать, она должна быть в stdlib

Roman
09.10.2018
07:43:55
И какой номер issue в YouTrack?

Алексей
09.10.2018
07:44:53

Alexander
09.10.2018
07:45:15
Ой, не надо по новой.

Алексей
09.10.2018
07:45:21
while ( { true } ) { ... }
Так, что ли?

Alexander
09.10.2018
07:46:20
Да нет, он предлагал дефолт сделать типа while(condition: ()->Boolean = {true})

Google

Alexander
09.10.2018
07:46:26
Хочется человеку

Алексей
09.10.2018
07:47:00
ясненько

Alexander
09.10.2018
07:47:06
Резюмирую для тех, кому лень читать. Единственная разумная мысль была в начале. Хочется - напиши свое расширение. Одна строчка кода

Алексей
09.10.2018
07:47:12
ну хочется - пущай сделает
ясненько, в общем

Alexander
09.10.2018
07:51:12
Там где-то в середине еще была разумная мысль о том, что stdlib должен быть чем меньше, тем лучше. Я поддерживаю если что. Я не на андроиде, но минимализм никому еще не повреждал. tornadofx тоже надо распилить, вроде даже планы были.

Алексей
09.10.2018
07:53:58
Про торнадо пока ничего не могу сказать, но да, факт в том, что чем меньше stdlib - тем лучше. Главное, чтобы в случае чего можно было всё остальное легко получить и, главное, узнать, откуда получить
А то получится как с C/C++

Alexander
09.10.2018
07:54:55
Да, я был в шоке, когда обнаружил, что там комплексные числа в стандартной библиотеке ?

Алексей
09.10.2018
07:55:23

Alexander
09.10.2018
07:55:35
ага, сам обалдел.

Kirill
09.10.2018
07:56:00
Всем нужны комплексные числа.

Алексей
09.10.2018
07:56:45

Alexander
09.10.2018
07:56:52
Конечно, куда же без них. У сишников вообще все стандартной библиотеке, поскольку нет управления зависимостями и все что не в ней работать не будет.

Roman
09.10.2018
07:57:58
Любой game программист тебе скажет что всем нужны кватернионы, а от комплексных чисел никакой пользы ;)

Leonid
09.10.2018
07:59:00
Сделайте себе либу наподобие https://github.com/czyzby/kotlin-times и радуйтесь whilе'у без true))