Как сохранить файлы настроек / конфигурации Node.js?

Как и многие современные языки, VB6 имеет типы значений и ссылочные типы. Классы определяют ссылочные типы. С другой стороны, ваши основные типы, такие как Integer, являются типами значений.

Основное различие заключается в назначении:

Dim a as Integer
Dim b as Integer
a = 2
b = a
a = 1

В результате a равно 1 и b равно 2. Это потому, что присваивание в типах значений делает копию. Это потому, что каждая переменная имеет пространство, выделенное для значения в стеке (в случае VB6, Integer занимает 2 байта в стеке).

Для классов это работает иначе:

Dim a as MyClass
Dim b as MyClass
Set a = New MyClass
a.Value1 = 2
Set b = a
a.Value1 = 1

В результате обе a.Value1 и b.Value1 равны 1. Это потому, что состояние объекта хранится в куче, а не в стеке. В стек хранится только ссылка , поэтому Set b = a перезаписывает ссылку. Интересно, что VB6 явно говорит об этом, заставляя использовать ключевое слово Set. Большинство других современных языков этого не требуют.

Теперь вы можете создавать свои собственные типы значений (в VB6 они называются User Defined Types, но на большинстве других языков они называются структурами или структурами) , Вот учебник .

Различия между классом и определенным пользователем типом (кроме класса, являющегося ссылочным типом и UDT, являющегося типом значения) состоит в том, что класс может содержат методы (методы и свойства), в которых UDT не может. Если вы просто ищете класс типа записи, тогда может быть вашим решением UDT.

Вы можете использовать сочетание этих методов. Предположим, вам нужен класс, потому что у вас есть определенные поведения и вычисления, которые вы хотите включить вместе с данными. Вы можете использовать шаблон memento , чтобы удерживать состояние объекта внутри UDT:

Type MyMemento
    Value1 As Integer
    Value2 As String
End Type

В своем классе убедитесь, что все ваше внутреннее состояние хранится внутри частного члена типа MyMemento. Напишите свои свойства и методы, чтобы они использовали данные только в одной переменной частного члена.

Теперь сделать копию вашего объекта просто. Просто напишите новый метод в своем классе под названием Copy(), который возвращает новый экземпляр вашего класса и инициализирует его копией собственного memento:

Private Memento As MyMemento

Friend Sub SetMemento(NewMemento As MyMemento)
    Memento = NewMemento
End Sub

Public Function Copy() as MyClass
    Dim Result as MyClass
    Set Result = new MyClass
    Call Result.SetMemento(Memento)
    Set Copy = Result
End Function

Friend только скрывает его от материала вне вашего проекта, поэтому он мало чем скрывает SetMemento, но это все, что вы можете сделать с VB6.

HTH

606
задан mikl 3 May 2011 в 12:09
поделиться