Hashs durcheinander
hy ich habe diesen Hash:
aber wenn ich Reputation.keys machen kommt das raus:
wie kenn ich dafür sorgen, das es richtig bleibt?
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 |
Reputation = {
90..100=>"Heroic",
75...90=>"Honored",
55...75=>"Friendly",
45...55=>"Neutral",
25...45=>"Unfriendly",
10...25=>"Hated",
0...10=>"Despised"
} |
aber wenn ich Reputation.keys machen kommt das raus:
|
|
Quellcode |
1 |
[25...45, 55...75, 45...55, 0...10, 10...25, 75...90, 90..100] |
wie kenn ich dafür sorgen, das es richtig bleibt?
Realität ist nur eine subjektive Wahrnehmungsstörung.
Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.
Alles ist wahr, wenn man für wahr einen bestimmten Wert annimmt.
naja, keys macht in weitesten eher nur das:
h = { "a" => 100, "b" => 200, "c" => 300, "d" => 400 }
h.keys ? ["a", "b", "c", "d"]
also gibt nur ein array aus, welches die schlüssel von hash hat.
ich kenn mich nicht so gut mit hashes aus, nur die grundfuntkionen die man eher braucht oO"
ich mach immer die komplizierteren sachen xD
also so in etwa:
naja, gibt vor und nachteile.
vorteil ist, das man das script noch mit einigen funktionen ausbauen kann, also sachen hinzufügen...
der nachteil ist halt, das man irgendwo diesen code einbauen muss, lässt sich aber in endeffekt dann auch ganz leicht einfügen mit:
reputation(zahl) ? dann wird der text zurückgegeben...
aufwand, aber naja, des mit hash weis ich auch grad nicht xx
MfG
h = { "a" => 100, "b" => 200, "c" => 300, "d" => 400 }
h.keys ? ["a", "b", "c", "d"]
also gibt nur ein array aus, welches die schlüssel von hash hat.
ich kenn mich nicht so gut mit hashes aus, nur die grundfuntkionen die man eher braucht oO"
ich mach immer die komplizierteren sachen xD
also so in etwa:
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
def reputation(key)
case key
when 90..100
string = "Heroic"
when 75...90
string = "Honored"
when 55...75
string = "Friendly"
when 45...55
string = "Neutral"
when 25...45
string = "Unfriendly"
when 10...25
string = "Hated"
when 0...10
string = "Despised"
end
return string
end |
naja, gibt vor und nachteile.
vorteil ist, das man das script noch mit einigen funktionen ausbauen kann, also sachen hinzufügen...
der nachteil ist halt, das man irgendwo diesen code einbauen muss, lässt sich aber in endeffekt dann auch ganz leicht einfügen mit:
reputation(zahl) ? dann wird der text zurückgegeben...
aufwand, aber naja, des mit hash weis ich auch grad nicht xx
MfG
Prinzipiell erst mal gar nicht. Hashs sind nicht sortiert, das liegt in ihrer Natur. Du könntest in diesem Fall entweder einen Array verwenden, oder den Hash#key-Array im Nachhinein sortieren.
Das einfügen und danach einfach an das Reputation.keys ein sort dranhängen: Reputation.keys.sort
Edit: Marskus' Methode finde ich btw. dennoch sinnvoller, da sie gleich auch das range === zahl in die Methode mit einlagert. Normalerweise bin ich ja auch ein Freund von Konstanten, in diesem Fall aber machst du es dir dadurch nur umständlicher.
|
|
Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 |
class Range
include(Comparable)
def <=>(other)
if first > other.first then 1
elsif first < other.first then -1
elsif first == other.first then
if last > other.last then 1
elsif last < other.last then -1
else 0 end
else 0 end
end
end |
Das einfügen und danach einfach an das Reputation.keys ein sort dranhängen: Reputation.keys.sort
Edit: Marskus' Methode finde ich btw. dennoch sinnvoller, da sie gleich auch das range === zahl in die Methode mit einlagert. Normalerweise bin ich ja auch ein Freund von Konstanten, in diesem Fall aber machst du es dir dadurch nur umständlicher.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »=Kai=« (27. Juni 2007, 14:40)

