@kotlin_lang

Страница 498 из 982
Андрей
20.01.2018
22:42:08
ну так мне нужны только Number типы, у меня арифметические операции
Допустим у тебя есть class MyInt : Int и ты етот MyInt прокинул в свой метод в качестве N. Проверка на is Int пройдет (так как myInt instanceOf Int == true). Смарт-каст приведет его в Инт безопасно, и сложит с другим интом. Но сложение двух интов - это тоже инт. И вот его в MyInt нельзя скастить. Поэтому котлиновский смарт-каст это не делает. И руками написанный intVar as MyInt на рантайме ексепшин выбросит.

Dumitru
20.01.2018
22:42:08
Или они так за сохранения памяти борятся ? ))

Google
Bogdan
20.01.2018
22:43:06
я не могу от него наследоватся

Андрей
20.01.2018
22:43:23
Так это для всех классов так работает.

И при большом желании даже от final классов можно наследоваться.

Bogdan
20.01.2018
22:44:48
Так это для всех классов так работает.
скопируй и сгенери из котлина кода в джаву, там стандартные вещи, которые я раньше писал на джаве

Андрей
20.01.2018
22:45:57
скопируй и сгенери из котлина кода в джаву, там стандартные вещи, которые я раньше писал на джаве
Ну да, на джаве это работает точно так же. С ексепшеном в рантайме.

Igor
20.01.2018
22:46:00
ну к примеру обычные инты
А потому что не надо var юзать, kotlin это не императивная-сишка. Большинству пользователей надо val для обычных высокоуровневых тырпрайз/server/android приложений.

Bogdan
20.01.2018
22:46:10
Или они так за сохранения памяти борятся ? ))
не такая идеолгия по факту, и проще компилятору

Андрей
20.01.2018
22:47:17
Писал же как - когда родителя в наследника кастим.

Va
20.01.2018
22:51:20
ну я дал примел, это уже по усматрению
обычный var в котлине это нечто большее, чем просто поле с данными. он имеет свой set, свой get и field, которое, собственно, и является данными. поэтому, под одним var может быть только один var

Google
Dumitru
20.01.2018
22:51:53
с val так же ?

хотя там нет set

Va
20.01.2018
22:52:08
у val есть get

Dumitru
20.01.2018
22:52:17
да get есть

Андрей
20.01.2018
22:52:29
КАК ? пример, пруфы, я раньше их не ловил
Котлин же не может проверить как ты этот метод вызывать будешь. Тем более что это вообще может быть часть быблиотеки. Все, что ему известно на данные момент, это то, что там может придти что угодно, что екстендится от намбера. И когда он делает проверку на Инт, то становится известно только то, что там Инт или любой из его наследников. Поэтому там, где мы вызываем методы самого Инта или его родителей - это безопастно, и смарт-каст работает. А вот так, где надо его в наследника преобразовать - тут уж извини, это опасная процедура, и Котлин за тебя ее делать не будет.

Va
20.01.2018
22:52:52
который можно переопределять при желании, поэтому нет

ммм
объясни, зачем тебе вообще может такое понадобиться, еще и только от чисел ?

Dumitru
20.01.2018
22:54:06
так можно создать с одним val много переменных ?

с val так же ?

Va
20.01.2018
22:54:28
с val так же ?
нельзя, с val ровно та же история

Va
20.01.2018
22:54:47
с val так же ?
тебе строчек кода жалко ? )

Dumitru
20.01.2018
22:54:48
Dumitru
20.01.2018
22:55:14
Андрей
20.01.2018
22:55:50
тебе строчек кода жалко ? )
Ну обещали же что при переходе с Джавы на Котлин строчек кода меньше будет.

Bogdan
20.01.2018
22:57:53
Dumitru
20.01.2018
22:59:15
:D

Андрей
20.01.2018
22:59:16
Если меряться строчками кода, то можно вообще всю программу в одну строчку записать.

Bogdan
20.01.2018
22:59:25
ага

Google
Va
20.01.2018
22:59:36
и я зделал за него, проблема тут нет я обработал все варианты, там инлайн с reified, все ошибки свел к минимум
не уверен, что сработает, но ты можешь проверять тип на то, является ли он примитивом, делать его as Float, например, и проводить все операции

Dumitru
20.01.2018
22:59:43
строк больше, за то читаемость лучше - и вам, и компилятору ))

Dumitru
20.01.2018
23:00:43
в остальных случаях строк действительно меньше на 25%

Dumitru
20.01.2018
23:02:05
ну в зависимости на сколько большой код

у меня по меньше там..

Bogdan
20.01.2018
23:02:43
да, почему нет
тогда все просто, я вот хочу что бы можно было юзать произвольного типа, эта функцая идет в другую структуру и тип там определяется

Dumitru
20.01.2018
23:02:45
значит 55-60% ))

Bogdan
20.01.2018
23:03:07
значит 55-60% ))
-+, смотря как ты соблюдаешь стиль код

да, почему нет
я уже в принципи решил как можно, может переделаю, просто котлин хвастался предугадывание типов, а тут такая вига. Ну это мои ожедания панили не ваши)

Dumitru
20.01.2018
23:08:43
знает ли кто API для поиска картинок ?

Андрей
20.01.2018
23:10:00
я уже в принципи решил как можно, может переделаю, просто котлин хвастался предугадывание типов, а тут такая вига. Ну это мои ожедания панили не ваши)
Котлин позиционировался как надежный язык. И котлин хвастался предугадывание типов только там, где это безопасно. Почему опасно именно в данном случае я как мог, так и объяснил. Если не получилось - извините, по другому не умею. При этом разработчик лучше компилятора знает как именно он свой код использовать будет. По этому никто ему не запрещает в опасных случаях брать ответственность на себя. Что в данном примере и делается с помощью оператора as

Va
20.01.2018
23:10:16
знает ли кто API для поиска картинок ?
https://developers.google.com/custom-search/

Dumitru
20.01.2018
23:14:35
ого написал Java, нашлось Kotlin :D https://ru.stackoverflow.com/questions/692931/Поиск-изображений-при-помощи-google-custom-search-api это победа ))

написал так: "java поиск картинок в интернете"

Андрей
20.01.2018
23:15:21
ты Колумб
Вот сейчас вообще не понял. Колумб то тут при чем?

Google
Андрей
20.01.2018
23:21:20
Так если тебе это давно известно, то зачем задавать вопросы о том, что is не работает, смарт-каст не работает? Тебе же несколько человек пыталось объяснить.

Bogdan
20.01.2018
23:22:56
Так если тебе это давно известно, то зачем задавать вопросы о том, что is не работает, смарт-каст не работает? Тебе же несколько человек пыталось объяснить.
повторяю для особо одареных, выше уже оветили, поправили, пояснили, а вы тут начали что там говорит что котлин не такой а дргой. Все заканчиваем флудить

Kirill
21.01.2018
00:43:53
Safe call ведь никак не спасёт от NoSuchElementException?

Руслан
21.01.2018
09:12:59
Safe call ведь никак не спасёт от NoSuchElementException?
Спасет, если использовать методы которые вместо NoSuchElementException отдают тull

Georgiy
21.01.2018
15:08:05
Всем привет, интересно поведение brunch prediction в JVM по сортированным/несортированным коллекциям. Кто может объяснить, почему сортированный лист проходится в среднем в несколько раз медленнее несортированного в этом бенчмарке?

Dmitriy
21.01.2018
15:16:58
Всем привет! В процессе изучения Котлина возник вопрос: почему в отличие от явы не считается ошибкой попытка кастить и проверять на соответствие типов объект - не состоящий с проверяймым типом в иерархических отношениях? То, что раньше пресекалось на этапе компиляции теперь будет стрелять каст экзепшоном в рантайме.

Georgiy
21.01.2018
15:23:39
И не стыдно с таким бенчами приходить? Есть же http://openjdk.java.net/projects/code-tools/jmh/
Не стыдно, на самом деле. Спасибо за ссылку, я никогда не работал с Java и только начинаю изучать Kotlin. Если будут нужны бенчи в будущем, обращу внимание на JMH. Что насчет сабжа?

Dmitriy
21.01.2018
15:25:22
Dima проверил. Да, все верно, проверяет. Видать, показалось.)

Georgiy
21.01.2018
15:28:50
https://stackoverflow.com/a/11227902/3050249
После прочтения этого поста я написал то, что я называю бенчмарком, и он показывает более медленный результат для сортированной коллекции

Здравый смысл подсказывает, что так быть не может, поэтому и обратился сюда, чтобы понять, где у меня ошибка

Dmitriy
21.01.2018
15:30:10
Dima хотя жесткая проверка иерархии работает только на is, as пропускает только в путь:

Quantum Harmonizer
21.01.2018
15:30:19
Я здесь вообще не вижу ситуации с возможной branch prediction.

Georgiy
21.01.2018
15:30:44
Насколько?
В 1-4 раза.

Dmitriy
21.01.2018
15:30:59


Google
Dibro
21.01.2018
15:31:28
варнинг же показывается

Georgiy
21.01.2018
15:31:45
Я здесь вообще не вижу ситуации с возможной branch prediction.
А условный оператор if в цикле не достаточен для создания такой ситуации?

Dibro
21.01.2018
15:31:58


Quantum Harmonizer
21.01.2018
15:32:03
Dmitriy
21.01.2018
15:34:56
Dima в то-то и дело, что в Java и проверка, и каст дают ошибку компиляции, а Kotlin - ошибку и ворнинг, соответственно. Которые можно (но не нужно) не заметить или проигнорировать.)

Georgiy
21.01.2018
15:36:20
это место очень легко соптимизировать
Декомпилированный Kotlin byte-code выдает тот же цикл: int var9; User i; for(var9 = 0; var9 < var8; ++var9) { i = var7[var9]; if (i.getAge() > 0.5D) { bul = true; } else { bul = false; } }

Georgiy
21.01.2018
15:37:00
Если слать код в чат plain text - не комильфо, скажите

Anton
21.01.2018
15:37:15
оберни в бектики

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