Как использовать свойство Let для массивов? - PullRequest
0 голосов
/ 15 июля 2011

Я очень новичок в VBS, но я не могу реализовать даже самые простые вещи, как кажется.Я хочу иметь класс, который содержит массив в приватном члене.Поскольку я хочу «внедрить» массив, я попытался реализовать «метод установки», используя функциональность Let.

Class CPhase

    Private m_AllowedTasks()

    Public Property Let AllowedTasks(p_AllowedTasks)
        m_AllowedTasks = p_AllowedTasks
    End Property

    Private Sub Class_Initialize()
        ReDim m_AllowedTasks(0)
End Sub
End Class

Этот класс используется следующим образом:

Dim allowed
allowed = Array("task1", "task2")
Dim phase
Set phase = New CPhase 
phase.AllowedTasks = allowed

Это приводит к "ошибке времени выполнения Microsoft VBScript (...): несоответствие типов" в методе Let.Я также пытался использовать различные комбинации «ByVal», «ByRef», но, поскольку у меня не было абсолютно никакого опыта работы с VBS, я не мог найти решение.Так что я делаю не так?

Любые советы или ссылки на полезные ресурсы очень ценятся!Спасибо!

1 Ответ

1 голос
/ 15 июля 2011

виновник

Private m_AllowedTasks()

, который создает мерзость - фиксированный массив без размера. Просто удалите ().

Private m_AllowedTasks

для создания (пустого) варианта, который можно установить = пустить в полезный (с возможностью повторного создания) массив.

...