Выберите Дело о ссылочной коллекции в Sub - PullRequest
0 голосов
/ 30 марта 2020

Добрые люди.

Я хочу написать процедуру обмена для коллекций. Код пока:

Sub swap(ByRef colFrom As Collection, ByRef colTo As Collection, theKey As String)
'Some needed work beforehand:
Select Case colFrom
    Case colA:
        ' do A 
        ' colA is a public collection
    Case colB:
        ' do B
        ' colB is also a public collection
    Case Else
        ' do Nothing
End Select

' the swap
' If KeyExists(colFrom, theKey) Then   ' another function
     colTo.Add Item:=colFrom.Item(theKey), Key:=theKey
     colFrom.Remove (theKey)
     ' do some stuff according to previous select case... 
' End If

Сам своп работает. Но мне нужно сделать некоторую очистку до и после обмена в зависимости от коллекции, которая была передана в сабвуфер. При этом я получаю сообщение об ошибке «Аргумент не является обязательным» в строке 3 (Выбрать ...). Добавление, например, целочисленных параметров для проверки возможно. Но тогда я должен убедиться, что эти целые числа совпадают с коллекциями.

У вас есть идея, как это реализовать без дополнительных параметров?

1 Ответ

0 голосов
/ 30 марта 2020

Вы можете повернуть Select Case и переместить сравнение с помощью Is

Select Case True
    Case colFrom Is colA
        ' do A
        ' colA is a public collection
    Case colFrom Is colB:
        ' do B
        ' colB is also a public collection
    Case Else
        ' do Nothing
End Select
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...