Инициализация массива в Eiffel

class
    MAP[G]
create
    make

feature --attributes
    g_array: ARRAY[G]
    size:INTEGER

feature{NONE}
make
    do
        g_array.make_empty
           size:=0
    end

class
    MAP_TESTING

m: MAP[INTEGER]

create m.make
print(m.size)

Первый класс состоит из массива и его размера. Когда я пытался создать m объект ARRAY, кажется, ничего не печатать, когда я положил print(m.size), Правильно ли я создаю массив? Я использую правильный make функция для ARRAY? Почему он ничего не печатает?

---------------------------

class
    MAP[G]
create
    make

feature --attributes
    g_array: ARRAY[G]
    size:INTEGER

feature{NONE}
make
  --I left this blank
    end

class
    MAP_TESTING

m: MAP[INTEGER]

create m.make
print(m.size)

Это на самом деле работает, когда я покинул make пустой. Распечатывает 0, Но это не хорошо, потому что, очевидно, если я вызываю другие функции, используя массив в MAPэто не сработает. Я на самом деле пытался использовать другие функции из класса ARRAY, но я получил ошибку компиляции.

1 ответ

Строка для создания массива в MAP должно быть:

create g_array.make_empty

А также MAP_TESTING должно быть:

class
    MAP_TESTING
creation
    make
feature
    m: MAP[INTEGER]

    make
    do
        create m.make
        print(m.size)
    end
end

(Обратите внимание, что print не выводит символ новой строки, поэтому ноль может легко потеряться в терминале.)

Другие вопросы по тегам