Как инициализировать локальную переменную в ее объявлении в Eiffel? - PullRequest
4 голосов
/ 10 ноября 2011

Я пытался сделать это:

local
    condition: BOOLEAN
    condition := true
do

И как то так:

local
    condition: BOOLEAN := true
do

Очевидно, что ни то, ни другое не работает, но мне нужно инициализировать переменную внутри объявления, потому что я не хочу, чтобы переменная повторно инициализировалась, если выполняется команда повтора. Я посмотрел в официальной документации Eiffel и в учебнике, но они всегда инициализируют переменные в теле операции.

Ответы [ 2 ]

7 голосов
/ 11 ноября 2011

Каждая переменная инициализируется в Eiffel, поэтому в локальной системе все они получают значение по умолчанию, которое для BOOLEAN равно false.

Обратите внимание, что для повторной попытки переменные не инициализируются снова по умолчанию, поэтому вы можете использовать это с:

test
  local
    retrying: BOOLEAN
  do
    if retrying then
      do_something_else
    else
      retrying := true
      first_try
    end;
  rescue
    handle_error
    retry
  end
0 голосов
/ 13 октября 2015

Я думаю, вы можете использовать

local
condition: BOOLEAN = true
do
...