2016-11-02 2 views
0

Ich versuche, einen Agenten „print_min_fold“ für eine LINKED_LIST „Falten“ in Eiffel zu machen:gibt es die Fehlermeldung „Vevi: wird Variable nicht richtig eingestellt“ in Eiffel, zu

------- ----------------- 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

Der Fehler ich tun ist:

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

Antwort

1

Es sieht aus wie print_min_fold aufgerufen wird, bevor grid ein Objekt angebracht ist. Sie müssen grid initialisieren, bevor print_min_fold aufgerufen werden kann.

Alternativ können Sie grid als detachable separate markieren, aber dann müssen Sie Objekttests verwenden, um sicherzustellen, dass es nicht ungültig ist, bevor Sie Anrufe tätigen.

Verwandte Themen