EnglishРусский  

   Приложение

Реклама

Инсталлятор CreateInstall
Бесплатные и коммерческие инсталляторы

Приведение типов

Оператор as

Оператор as может выполнять две функции: присваивать значение переменной и изменять тип. Оператор бинарный, вычисляется справа налево. Левый операнд обязательно должен быть локальной переменной типа uint. В зависимости от правого операнда может быть два варианта работы.

Первый вариант

Правый операнд - имя структурного типа. Значение локальной переменной не изменяется, но её тип временно меняется на указанный, предполагается, что переменная содержит адрес какого-либо объекта и к переменной теперь можно обращаться непосредственно как к объекту, без использования операции взятия значения ->.

str  mystr
uint a

a = &mystr
a as str
a = "New value"

Второй вариант

Правый операнд - выражение которое возвращает объект. Переменной присваивается адрес на данный объект и она меняет свой тип на тип этого объекта. Объект должен иметь тип отличный от числового.

str mystr
uint a

a as mystr
a = "New value"

Тип переменной остаётся изменённым до конца текущего блока или до следующей операции as над этой переменной.

Оператор ->

Часто требудется просто указать, что переменная имеет определенный структурный тип. В этом случае можно использовать оператор -> с именем требуемого структурного типа. Вместе с именем типа можно указывать размерность в квадратных скобках и тип элементов с помощью of. Переменная к которой применяется -> может быть любого структурного типа, а не только uint.

func myfunc( uint mode, uint obj )
{
   str  ret
   uint val
   
   switch mode
   {
      case 0: myproc( obj->arrstr )
      case 1: print( obj->str )
      case 2: obj->mytest.mytest2str( ret )
      case 3
      {
         val = (obj->arr[,] of ubyte )[1,1]
      }
   }
}

Конвертация типов

По умолчанию автоматически конвертируются друг в друга только целочисленные типы byte,ubyte, short, ushort, int, uint, для других типов следует использовать явную ковертации. Для конвертации выражения в другой тип, пишется имя типа, в который будет произведена конвертация и само выражение в скобках, конвертация будет проведена только в том случае если исходный тип имеет соответствующий метод. Подробнее о реализации таких методов смотрите на странице Определение метода method.

str a = "10"
uint b

b = uint( a )

Смотрите также

Редактировать