EnglishРусский  

   Базовые элементы языка

   Приложение

Реклама

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

Коллекции

Коллекции позволяют хранить вместе данные различных типов. Кроме этого они могут служить для инициализации массивов и любых других структур. Также коллекции можно использовать для передачи неопределенного количества параметров разных типов в функции и методы. Коллекциям соответствует тип collection. Коллекции определяются с помощью фигурных скобок %{ ... }. Внутри фигурных скобок можно указывать через запятую различные типы данных или другие коллекции.

Коллекциями, не содержащими выражений, можно инициализировать глобальные переменные.

global 
{
   arrstr  months = %{"January", "February", "March", "April", "May", 
   "June", "July", "August", "September", "October", "November", "December" }
}

Для инициализации переменной определенного типа с помощью коллекций необходимо предварительно описать оператор присваивания коллекции данному типу.

type test
{
   uint  num
   str    string
}
  
operator test =( test left, collection right )
{
   if right.gettype( 0 ) != uint : return left
   left.num = right.val( 0 )
   if right.gettype( 1 ) != str : return left
   left.string = right.val( 1 )->str
   return left
}

После этого можно инициализировать переменные простым присваиванием:

test  myt
myt = %{ 10, "test string" }

Используя параметр-коллекцию в функции, можно передавать неопределенное количество параметров разных типов.

func outvals( collection cl )
{
   uint i
   fornum i,*cl
   {
      print("\(i) = \(cl[ i ])\n")
   }
}

Вызов этой функции может быть следующим:

outvals( %{ 10, 20, 30, 40 })

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