и почему

Модератор: Модераторы
program cast;
var
  s: string;
  i: integer;
  r: real;
begin
  s := '578'; //комментарии излишни
  (string) r := s + '.5'; //r = 578.5
  i := 10 + (integer) s; //i = 588
  i := (integer) (r + i + 0.5); //i = 579 + 588, посчитайте, мне влом, но там целое число
end.

 .
.

 
 
 

 .
.

Я считаю что и простые типы должны быть объектами, т.е. иметь набор методов. Тогда реализуя метод __convert__(toType) (подчеркивания я взял из Python) можно описать преобразование любого типа в любой.
Что касается синтаксиса преобразования, то S := String(1 + 2), я считаю более приемлемым.
а что это никто не предлагает вообще убрать объявление переменных?

В РНР есть область видимости и существования, регулируемая вплоть до блока операторов. Если я создал переменную в цикле, я могу быть уверен, что за пределами цикла переменной не будет.
var
  I: Integer;
  S: String;
begin
  I := 12;
  S := '__' + I + '__'; {S := '__' + I.__convert__(String) + '__';}

 А уж для тех кто начинает программировать, особенно самостоятельно, это и вообще иногда неразрешимая проблема.
 А уж для тех кто начинает программировать, особенно самостоятельно, это и вообще иногда неразрешимая проблема.
 Если компилятор (или run-time блок) начнёт сам преобразовывать типы к нужному виду, то не всегда он выдаёт то, что нужно. Да и время лишнее затрачивается.
 Если компилятор (или run-time блок) начнёт сам преобразовывать типы к нужному виду, то не всегда он выдаёт то, что нужно. Да и время лишнее затрачивается. 

Vadim писал(а):Вот если бы изобрести универсальный тип, который вообще не нужно было бы никуда конвертировать...
 
 

 

набор процедур для выполнения арифметики без преобразования к цичслам уже сейчас есть
 
 

Вернуться в Компилятор / язык программирования
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1