1

我正在尝试为埃菲尔的linked_list“折叠”创建一个代理“print_min_fold”:

------------------------施尼普:

class PF_HP


create
 make

feature --Queries:
--  n : NONE;

grid: separate GRID;

seq: BOOL_STRING;
strseq: STRING;
iseq: INTEGER;

zero, one: BOOLEAN;

fold: STRING;

folds: LINKED_LIST[STRING];

losses, indices: LINKED_LIST[INTEGER];
 -- indices: ARRAY[INTEGER];

i: INTEGER;
loss, min: INTEGER
 --Constructor:

make
  do

min:=9999
loss:=0

 from
  io.put_string("                           123456789012345%N")
  io.put_string ("Bitte Bitsequenz eingeben: ")
  io.read_line
 until
        (not io.last_string.is_empty) --and then io.last_string.is_bit
 loop
   io.put_string("%N")
   io.put_string("Keine Bitsequenz eingegeben. Besteht nur aus 0 und 1 in beliebiger Reihenfolge!%N")
     io.put_string("                           123456789012345%N")
     io.put_string ("Bitte Bitsequenz eingeben: ")
     io.read_line
   end
-- iseq:=io.last_integer
 strseq:=io.last_string
 create folds.make
 create losses.make
 create indices.make --from_collection(losses)
 create fold.make(strseq.count-1)
 create seq.make(strseq.count)
 --create zero.make

zero:=False
one:=True

- - - - - - - - - - - - - -ETC...

 print_min_fold
do
  folds.do_all( agent print_item(?) )

end

 print_item(item: STRING)
    do
     number := number + 1
     io.put_character('#')
     io.put_integer(number)
     io.put_character(' ')
     io.put_string(item)
     io.put_character('%N')
  end -- print_item

---------------------------------- 施纳普

我得到的错误是:

Error code: VEVI

Error: variable is not properly set.
What to do: ensure the variable is properly set by the corresponding
setter instruction.

Class: PF_HP
Feature: print_min_fold
Creation procedure: make declared in PF_HP
Attribute(s): grid
Line: 400
do
->    folds.do_all( agent print_item(?) )
4

1 回答 1

3

看起来在附加对象print_min_fold之前调用。grid您需要在调用grid之前进行初始化。print_min_fold

或者,您可以标记griddetachable separate,但是您必须使用对象测试来确保在对其进行任何调用之前它不是无效的。

于 2016-11-02T16:30:38.743 回答