Динамические массивы в типах и классах
C версии компилятора 1.00.0 появилась возможность использовать динамические массивы в типах и классах. По мне так это очень удобная фишка. Сколько раз такое было необходимо, уж и не упомнить... Приходилось извращаться разными способами, но теперь все хватит :)
И так чтобы работать с динамическими массивами в типах и классах , нужно попросту запомнить его декларацию. А делается это так:
Dim Array(Any) As Integer
В данном случае это для типа Integer. Как видно от
обычного использования (т.е. не в типе и классе) отличается только ключевым
словом Any в скобах. А дальше как обычно переопределяем размер
массива с помощью Redim.
Пример для своего типа с динамическим массивом:
Type A Dim f(Any) As String ' декларация динамического массива End Type Dim a As A ' создаем переменную типа A Redim a.f(10) As String ' переопределение размера массива ' ---заполнение массива--- For i As Integer = 0 To 10 a.f (i) = Chr(i + &h41) Next ' ---чтение ячеек массива--- For i As Integer = 0 To 10 ? a.f(i) Next Sleep
А теперь пример класса с динамическим массивом:
' --- Класс B --- Type B Dim f(Any) As String ' декларация динамического массива Declare Sub initArray(As Integer) ' метод заполнения массива End Type Sub B.initArray(bound As Integer) Redim f(bound) As String ' переопределение размера динамического массива For i As Integer = 0 To bound f (i) = Chr(i + &h41) ' просто заполняем ячейки разными буквами Next End Sub ' -------------- ' ---Класс A является расширением класса B --- Type A extends B Declare Function printInfoArray() As String ' метод вывода всех ячеек в консоль End Type Function A.printInfoArray() As String For i As Integer = 0 To Ubound(f) ? f(i) ' вывод на консоль всех ячеек Next End Function '-------------------------------------------- Dim class_ As A ' создаем объект класса class_.initArray(15) ' заполняем массив class_.printInfoArray() ' читаем массив и выводим в консоль Sleep
Вот так просто использовать динамические массивы в типах и классах! Спасибо разработчикам за данную реализацию.