169 похожих чатов

Не совсем по флаттеру вопрос, скорее по дарту. почему типы в

дарте так туго приводятся друг к другу?
я, например, с C# привык, что можно неявно закастить double в int и наоборот, а в dart такого сделать не получится.
так следующий код выдает ошибку невозможности приведения типа int к double:
num i = 0; // runtime type is int not a num
double d = i; // compilation error
double d1 = i as double; // runtime error

13 ответов

9 просмотров

Ответ простой... и ПРАВИЛЬНО! Чтобы понимать что где и откуда и ты понимаешь. Хочется казачьей вольницы, можно сходить в ДжаваСкрипт, а потом на собесах 50% вопросов, а что делает этот код? и откуда после сложения и строки такая вот лютая дичь :) Типизация это гут!

Maxim-🍓 Автор вопроса
Aleksei Kiselev
Ответ простой... и ПРАВИЛЬНО! Чтобы понимать что г...

это не ответ почему. может и правильно, но я не могу те же дженерики написать по типу: abstract class Foo<T extends num> { T? nullOrT(); T foo() { var value = nullOrT() ?? 0; return value as T; // int to double error } } приходится костыли писать в духе abstract class Foo<T extends num> { T get defaultValue; T? nullOrT(); T foo() { var value = nullOrT() ?? defaultValue; return value; } } class Bar extends Foo<double> { @override double get defaultValue => 0; @override double? nullOrT() { return null; } } class Baz extends Foo<int> { @override int get defaultValue => 0; @override int? nullOrT() { return null; } }

Просто не привычно, вы привыкли к шарпу просто.

Maxim-🍓 Автор вопроса
Maxim 🍓
это не ответ почему. может и правильно, но я не м...

1. неявные касты зло, которое приводит к самым неявным проблемам 2. в примера ошибка из за nullOrT() ?? 0 - оно возвращает num из за принципа работы оператора "??"

Maxim-🍓 Автор вопроса
Royal Cat
1. неявные касты зло, которое приводит к самым нея...

1. я с таковыми значит еще не сталкивался 2. оно не возвращает num - runtimeType в примере int

num - это интерфейс, который имплементят и int, и double. Ты интовый литерал присваиваешь в num.

Maxim 🍓
1. я с таковыми значит еще не сталкивался 2. оно н...

я некорректно выразится, анализатор считает что value будет удовлетворять только num т.к. резольвит тип на месте, а каст num -> T считается апкастом поэтому не производится автоматически

Maxim 🍓
1. я с таковыми значит еще не сталкивался 2. оно н...

https://dart.dev/guides/language/numbers лучше прочитать, вы можете спокойно конвертировать int в double

В Dart тоже самое как в С#. Тот же c# ругается если присвоишь int`у double. Он неявно преобразовывает int в double, так как в C# есть перегрузка операторов преобразования.

В каком это таком шарпе можно неявно дабл к инту привести? Даже явно по большей части в исключение упадет не задумываясь.

Maxim-🍓 Автор вопроса

Похожие вопросы

Обсуждают сегодня

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
How to create an OS in C? what to study?
Linus
18
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
9
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта