
Андрей
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
Или они так за сохранения памяти борятся ? ))

Bogdan
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
Писал же как - когда родителя в наследника кастим.

Bogdan
20.01.2018
22:47:33

Dumitru
20.01.2018
22:48:09

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

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

Va
20.01.2018
22:54:47

Dumitru
20.01.2018
22:54:48

Bogdan
20.01.2018
22:54:52

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

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

Bogdan
20.01.2018
23:00:36

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

Va
20.01.2018
23:01:15

Bogdan
20.01.2018
23:01:26

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
да, почему нет
я уже в принципи решил как можно, может переделаю, просто котлин хвастался предугадывание типов, а тут такая вига. Ну это мои ожедания панили не ваши)

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

Андрей
20.01.2018
23:10:00

Va
20.01.2018
23:10:16

Bogdan
20.01.2018
23:13:19

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
ты Колумб
Вот сейчас вообще не понял. Колумб то тут при чем?

Bogdan
20.01.2018
23:15:31

Google

Bogdan
20.01.2018
23:16:33

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

Bogdan
20.01.2018
23:22:56

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

Руслан
21.01.2018
09:12:59

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

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

Igor
21.01.2018
15:17:35

Dibro
21.01.2018
15:20:31

Georgiy
21.01.2018
15:23:39

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

Quantum Harmonizer
21.01.2018
15:26:43

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

Quantum Harmonizer
21.01.2018
15:30:02

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

Dmitriy
21.01.2018
15:30:59

Google

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

Georgiy
21.01.2018
15:31:45

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

Quantum Harmonizer
21.01.2018
15:36:47

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

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