2016-11-02 2 views
0

Je suis en train de faire un agent « print_min_fold » pour un LINKED_LIST « plis » en Eiffel:Obtenir l'erreur « vevi: variable n'est pas réglé correctement » en Eiffel, trop

------- ----------------- Schnipp:

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("       123456789%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("       123456789%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 

----------------------------------- Schnapp

L'erreur que je reçois est:

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(?)) 

Répondre

1

Il ressemble à print_min_fold est appelé avant grid est attaché un objet. Vous devez initialiser grid avant de pouvoir appeler print_min_fold.

Vous pouvez également marquer grid comme detachable separate, mais vous devrez alors utiliser des tests d'objet pour vous assurer qu'il n'est pas vide avant de passer des appels.