Объявляет переменную, тип которого вытекает из выражения инициализатора
Синтаксис
Var [Shared] symbolname = expression[, symbolname = expression]
Описание
Var объявляет переменную, тип которого вытекает из выражения
инициализатора. Нельзя явно указывать тип в декларации
Var.
Выражение инициализатора может быть константой или любой переменной любого
типа.
Примечание:
WString не
поддерживается с
Var, в связи с тем, что нет типа
WString
динамической длины. Это вряд ли изменится, из-за сложностей, связанных с
обработкой Unicode.
Поскольку тип переменной выводится из того, что вы назначаете в него,
полезно знать, как работают литералы. Любое литеральное число без десятичной
точки по умолчанию
Integer.
Литеральное число с десятичной точкой по умолчанию
Double. Смотрите
ProPgLiterals для получения дополнительной
информации.
Все выражения
ZString, в том числе
строковые литералы и разыменованные
ZString Ptr,
будут типом
String.
Явные суффиксы могут быть использованы для литеральных переменных, чтобы
изменить/уточнить их тип. Смотрите
Literals
и
Variable Types для более подробной
информацией о суффиксах, которые можно использовать для литералов.
Примечание: Суффиксы должны появиться на инициализаторе, не на переменной.
Попытка использовать
Var с переменной, которая имеет
суффикс, вызовет ошибку при компиляции.
Пример
Var a = Cast(Byte, 0)
Var b = Cast(Short, 0)
Var c = Cast(Integer, 0)
Var d = Cast(LongInt, 0)
Var au = Cast(UByte, 0)
Var bu = Cast(UShort, 0)
Var cu = Cast(UInteger, 0)
Var du = Cast(ULongInt, 0)
Var e = Cast(Single, 0.0)
Var f = Cast(Double, 0.0)
Var g = @c '' integer ptr
Var h = @a '' byte ptr
Var s2 = "hello" '' переменной
длины string
Var ii = 6728 '' неявный integer
Var id = 6728.0 '' неявный double
Print "Byte: ";Len(a)
Print "Short: ";Len(b)
Print "Integer: ";Len(c)
Print "Longint: ";Len(d)
Print "UByte: ";Len(au)
Print "UShort: ";Len(bu)
Print "UInteger: ";Len(cu)
Print "ULongint: ";Len(du)
Print "Single: ";Len(e)
Print "Double: ";Len(f)
Print "Integer Pointer: ";Len(g)
Print "Byte Pointer: ";Len(h)
Print "Variable String: ";Len(s2)
Print
Print "Integer: ";Len(ii)
Print "Double: ";Len(id)
Sleep
Отличие от QB
Различия диалектов
- Нет в наличии в диалекте -lang qb
, но есть псевдоним __Var.
См. также