1

エッフェルのlinked_list「folds」のエージェント「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

- - - - - - - - - - - - - -等...

 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に初期化する必要があります。gridprint_min_fold

gridまたは、としてマークすることもできますがdetachable separate、オブジェクト テストを使用して、呼び出しを行う前にそれが無効でないことを確認する必要があります。

于 2016-11-02T16:30:38.743 に答える