Ergebnis 1 bis 13 von 13

Thema: Problem beim Umgang mit Array

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    Dann ist das Break keinesfalls richtig.

    Hier ein Beispiel mit deinem Code:
    @skills[0] = 4
    @skills[1] = 27
    @skills[2] = 9

    Was würde nach der Ausführung von diesem Code-Abschnitt passieren:
    Code:
    i = 0     
    while i < @skills.size
          if @skills[i] < 25
            @skills.delete_at(i)
            i -= 1
          else
            break
          end
          i += 1
        end
    Ganz einfach:

    Schritt 1:
    i = 0
    @skills[0] == 4 < 25 => true
    -> @skills.delete_at(0)


    Schritt 2:
    i = 1
    @skills[1] == 27 < 25 => false
    -> break

    Schritt 3:
    Wird nichtmehr weiter ausgeführt, da die While-Schleife hier bereits beendet worden ist.
    Soweit ich dich verstanden habe soll dem aber nicht der Fall sein.

    Es würde nämlich sonst nur bis zu dem ersten Vorkommen eines Skills mit einer ID < 25 gesucht werden und danach abgebrochen werden ohne Acht darauf zu geben wie viele weitere Skills noch kommen würden und welche ID diese haben.

    Tatsächlich müsste dein Code an der Stelle wie folgt aussehen:
    Code:
    for i in 0...@skills.size
      if @skills[i] < 25
        @skills.delete_at(i)
      end
    end
    Um alle Skills mit den ID's < 25 heraus zu filtern.

    Alternativ könntest du auch zuerst @skills.sort! ausführen und danach iterieren bis du eine ID >= 25 gefunden hast.

    Außerdem sollte der Code
    Code:
    elsif !waffe.include?("")
    Soweit ich deine Absicht damit richtig verstanden habe vielleicht lieber folgendermaßen geschrieben werden:
    Code:
    elsif not waffe.empty?
    Es ist definitiv leichter verständlich, ich nehme an auch effektiver von der Performance her aber das ist nicht empirisch von mir überprüft worden sondern lediglich eine Vermutung.

    Geändert von Cornix (12.12.2011 um 12:45 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •