Re: типизация
Добавлено:
01.02.2010 14:45:48
Дож
AbakAngelSoft
Можно, и в предыдущем от тебя посту Sergei I. Gorelkin описал как это делается.
А в php есть проверка типов по время выполнения?
Re: типизация
Добавлено:
01.02.2010 15:07:29
Brainenjii
IsInteger() с товарищами там вроде есть
Re: типизация
Добавлено:
01.02.2010 21:12:38
Дож
Brainenjii
Я имел ввиду что произойдет если я попробую перемножить две строки
Re: типизация
Добавлено:
02.02.2010 10:30:43
AbakAngelSoft
получишь 0 или false, что равнозначно. Зачем спрашивать - можно и попробовать.
Добавлено спустя 2 минуты 55 секунд:
кстати gettype возвратит тип полученного значения integer!
Re: типизация
Добавлено:
07.04.2010 15:32:33
kovinik
из учебника: "тип переменной описывает НАБОР значений, которые она может принимать, и ДЕЙСТВИЯ, кторорые могут быть над ней выполнены."
пример:
var
s1, s2, s3: string;
begin
s2 := '1';
s3 := '1';
s1 := s2 + s3;
вопрос: какой должен быть результат, '11' или '2' ?
типы и нужны для того что-бы правильно определить ДЕЙСТВИЕ выполняемое оператором. в данном случае '+'. иначе нужно будет плодить кучу операторов для каждого спорного случая.
в принципе можно, дело вкуса.
в принципе базовых типов немного: целый(перечислимый), плавающий(вещественный), строковой, ссылочный, структурный, процедурный.
компилятор сам определяет количество байт для типа, по дельте.
byte = 0..255; delta = 255-0+1 = 256 = 1 byte
word = 0..65535; delta = 65535-0+1 = 65536 = 2 byte
и т.д.
хотя плавающие фиксированны, но в принципе можно и сними тоже самое. зависит от компилятора.
переменная - это объект. для его(их) преобразования нужны операции, если они уникальны то тип переменной не нужен, если они перегружены, то нужен.
Re: типизация
Добавлено:
08.04.2010 18:06:21
Дож
kovinik
Еще есть такая вещь, как динамическая типизация (python, например). И люди спокойно себе пишут проги.
Re: типизация
Добавлено:
16.05.2010 20:37:53
runewalsh
Max Rusov писал(а):Описать 2 числовых типа, которые будут между собой несовместимы
Меня интересует возможность заставить это не компилироваться:
- Код: Выделить всё
type
tWidth = type longint;
tHeight = type longint;
var
w : tWidth;
h : tHeight;
begin
w := 5;
h := 6;
w := h; // даёшь ошибку компиляции в таких случаях
end.
Re: типизация
Добавлено:
16.05.2010 22:34:12
alexrayne
Есть языки в которых етот код вызвал бы ошибку и нужно явно делать приведение типов (ада вдхл), однако по моему опыту такая паранойя со стороны компилятора ничего кроме тошноты и раздражения не вызывает. что кстати и подтверждается известной распространенностью этих языков.
В данном коде кажись что дельфа что фрюха выдадут ворнинг и имхо этого достаточно.
основная защита от ошибок была и остаетс имхо культура программиста и качественное тестирование.
Re: типизация
Добавлено:
17.05.2010 01:21:10
Максим
runewalsh писал(а):Меня интересует возможность заставить это не компилироваться:
Обычно это достигается объявлением tWidth, tHeight записями.
Re: типизация
Добавлено:
02.09.2013 02:31:26
Vapaamies
Жду теперь статьи "Виртуальная машина не имеет преимуществ перед непосредственной компиляцией".