Hi Irene + alle anderen,
Mir ist bei diesem Bspl aufgefallen, daß die Liste nicht - wie in der Angabe verlangt - sortiert wird. Man müßte also in der Methode lunique statt return $resultat beispielsweise return [lsort $result] einfügen.
if $memberArray($elt) {.....} bedeutet wohl, so wie Ferdinand geschrieben hat, wenn die Variable "true" ist (also einen Wert anders als 0 hat)
Deine Lösung funktioniert auch!
----- Original Message ----- From: Irene Fellner To: xotcl@alice.wu-wien.ac.at Sent: Thursday, November 07, 2002 4:56 PM Subject: Re: [Xotcl] psnm - aufgabe 1c
hi,
danke für die antwort, die bedingung ist hier also dass $elt true (1 ist), oder?
ich frage mich nur, ob man die methode lunique nicht viel einfacher lösen könnte mit: proc lunique l { foreach elt $l { set memberArray($elt) 1 } return [array names memberArray] }
sie bringt bei mir auf jeden fall das gleiche ergebnis, und ist kürzer und verständlicher ....
lg irene ----- Original Message ----- From: Ferdinand Eckert To: Irene Fellner Sent: Thursday, November 07, 2002 4:42 PM Subject: Re: [Xotcl] psnm - aufgabe 1c
hi,
genau weiß ich's leider nicht (hatte leider noch keine zeit zu lernen), aber ich würde folgendes vermuten:
die bedingung ist der term "$memberArray($elt)" nachdem eine bedingung immer "true" oder "false" (bzw. 0 oder 1 ist !!!) wird hier der wert von memberArray and der stelle $elt abgefragt (und als true/false interpretiert) --> ist dieser 0 --> false --> ist er != 0 --> true
zumindest in C ist es so, wenn ich mich richtig erinnere ;-)
lg Ferdinand
Irene Fellner wrote:
hallo,
bin grad am üben für den test nächste woche :-) die lösung von aufgabe 1c (liste - jedes wort nur einmal) versteh ich nicht ganz. dh insbesondere folgenden teil der methode lunique: foreach elt $l { if $memberArray($elt) { lappend result $elt set memberArray($elt) 0 }
ganz konkret kapier ich die if-methode nicht - hier fehlt doch die bedingung oder?? vielleicht kennt sich ja jemand aus, und kann mir es erklären ...
danke, lg irene