App Programmierung Starten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • rumme schrieb:

    klassische Variante

    Genau. Das meinte ich ja mit C-Variante. Im Englischen redet man da soweit ich weiß von einer C-style for loop.

    rumme schrieb:

    ... aber die ist ja sogar in Objective-C sowas von vorgestern und total veraltet. Selbst ich verwende das inzwischen nur noch dann, wenn es wirklich nicht anders geht :o

    Darf ich erfahren, welche Fälle das beispielhaft sind, wo es wirklich nicht anders geht?
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • Es geht immer anders. Ich habe schon erlebt das jemand bestimmte Einträge aus einer arrayliste löschen wollte und deshalb mit einem interator darüber iteriert hat und dann innerhalb der Schleife sich alles Einträge die gelöscht werden müssen in einer neuen arrayliste gemerkt hat weil man ja innerhalb eines iterators nicht löschen kann. Da finde ich es doch einfacher mit einem Index zu arbeiten und direkt zu löschen.
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • @Thallius verstehe ich jetzt nicht so ganz, was Du damit in diesem Kontext sagen willst. Wenn Du innerhalb einer for-Schleife (das ist ein Iterator!) Elemente einer Collection entfernst, änderst Du auch die Indices dieser Collection.
    Das, was Du ansprichst, ist ein allgemeines algorithmisches Problem. Das hat nichts mit C-for loops zu tun. ?(
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • torquato schrieb:

    Darf ich erfahren, welche Fälle das beispielhaft sind, wo es wirklich nicht anders geht?
    Also ich habe häufiger Fälle, in dem mich während oder nach den Schleifendurchläufen die Indizes interessieren. Verwende ich jetzt eine (Fast) Enumeration, geht mir diese Information verloren oder ich muss sie erst umständlich gewinnen. Da verwende ich gerne einen Schleifenindex.

    Das Maximalbeispiel hier vielleicht das Abmischen mehrere sortierter Listen...

    Oder gibt es „neumodischen Kram“ [tm], den ich konsequent ignoriert habe?

    Puh, so langsam sind wir weit weg von der Originalfrage nach dem Entwicker-Zertifikat ... obwohl, das war ja auch schon eine Folgefrage :D

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.

  • Ja, danke. War mir schon klar, worauf er sich bezieht. Ich habe früher ja auch Obj-C gemacht und kann ich daran erinnern, als das eingeführt wurde. Das war mit Obj-C 2.0, oder? Der Begriff 'Fast Enumeration' war mir so nicht mehr geläufig. Danke für's Auffrischen.^^
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • MyMattes schrieb:

    Also ich habe häufiger Fälle, in dem mich während oder nach den Schleifendurchläufen die Indizes interessieren. Verwende ich jetzt eine (Fast) Enumeration, geht mir diese Information verloren oder ich muss sie erst umständlich gewinnen. Da verwende ich gerne einen Schleifenindex.

    In Swift gibt es nur noch diese 'fast' enumerations. Man kann sich entscheiden, ob man die Index-Werte haben möchte, oder nicht.:

    Quellcode

    1. var str = "abcd"
    2. for c in str {
    3. print(c, terminator: ", ") // a, b, c, d,
    4. }
    5. for i in str.indices {
    6. print(str[i], terminator: ", ") // a, b, c, d,
    7. }

    1.) Eine C-for-Schleife bringt hier keinen Vorteil (im Gegenteil).
    2.) Änderungen der Collection während des Schleifendurchlaufs sind möglich, bringen aber die gleichen Probleme mit sich, wie in quasi jeder anderen Sprache auch, inklusive C.

    MyMattes schrieb:

    Das Maximalbeispiel hier vielleicht das Abmischen mehrere sortierter Listen...

    Es tut mir leid. Ich weiß nicht, waß das ist. Was meinst Du damit?

    MyMattes schrieb:


    Puh, so langsam sind wir weit weg von der Originalfrage nach dem Entwicker-Zertifikat ... obwohl, das war ja auch schon eine Folgefrage :D

    ^^

    Solange wir hier keine kriegerischen Flame-Wars durchfechten müssen und wir durch solche Diskussionen etwas lernen können ist doch alles OK.
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • torquato schrieb:

    In Swift gibt es nur noch diese 'fast' enumerations. Man kann sich entscheiden, ob man die Index-Werte haben möchte, oder nicht.:
    Auch wenn ich (noch?) in Obj-C unterwegs bin: Beim Lesen des oben von mir verlinkten Artikels bin ich über die "enumeration with blocks" gestolpert, die mir nicht bekannt war. Mit ihr könnte ich die von mir genannten Anwendungsfälle gut abdecken, inklusive eines Schleifenabbruchs, wenn z. B. ein gesuchtes Element gefunden wurde. Das werde ich mal im Hinterkopf behalten und nächstes Mal verwenden bzw. beim nächsten Code-Refresh umstellen.

    torquato schrieb:

    MyMattes schrieb:

    Das Maximalbeispiel hier vielleicht das Abmischen mehrere sortierter Listen...
    Es tut mir leid. Ich weiß nicht, waß das ist. Was meinst Du damit?
    Angenommen, Du hast zwei gleichermaßen sortierte Listen, die Du in eine gemeinsame überführen willst. Vielleicht sogar so, dass unterschiedliche Aktionen durchgeführt werden sollen, wenn ein Objekte in der einen, der anderen oder beiden Listen vorhanden ist. Klassischer Fall wäre das Synchronisieren von zwei Verzeichnissen.

    Wobei mir gerade auffällt, dass ich hier weniger mit einer for-, sondern mit verschachtelten while-Schleifen arbeiten würde:
    • Lies Objekt aus Liste A
    • Lies Objekt aus Liste B solange dies kleiner als Objekt A ist, führe dabei Aktionen für "nur B" durch
    • Vergleiche, ob Objekt A gleich Objekt B ist, führe ggfs. Aktion für "A und B" durch
    • Andernfalls führe Aktion "nur A" durch
    • Ab nach oben für nächstes Objekt aus Liste A
    So sind die Schleifendurchläufe gleicher der Summe Elementanzahlen beider Listen. Bei uns hieß das früher "Listen abmischen" ... Du kennst es vielleicht unter einer anderen Bezeichnung.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Thallius schrieb:

    torquato schrieb:

    1.) Eine C-for-Schleife bringt hier keinen Vorteil (im Gegenteil).
    .
    würdest du mir das Gegenteil bitte erklären?
    Weil der Integer-Counter einer Schleife absolut nichts mit dem Index der betreffenden Collection zu tun haben muß. Das ist letztendlich nur purer (in C jedoch gewollter) Zufall.

    1.) In einem Slice muß der erste Index nicht mit 0 beginnen
    2.) In komplexeren Collections, wie z.B. einer Reihe von Unicode Grapheme Clusters bei einem String ist ein Index nicht unbedingt konstant groß.

    Es ist sinnvoler eine Collection nach seinen Indices zu befragen und diese zu verwenden, als arbiträre unzusammenhängende Zahlenwerte einfach so zu verwenden. ;)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • Oder man benutzt einfach nur Collections von denen man weis das sie die entsprechenden Indizes hat.

    Sorry aber ich bin kein Freund davon meine Software zu fragen wie sie strukturiert ist. Ich bestimme das lieber selber.
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Thallius schrieb:

    Oder man benutzt einfach nur Collections von denen man weis das sie die entsprechenden Indizes hat.

    Sorry aber ich bin kein Freund davon meine Software zu fragen wie sie strukturiert ist. Ich bestimme das lieber selber.
    Hää!!?? ;( ?(
    Moment, Du hast ein Array mit n Elementen, willst Dein Array aber nicht fragen, wieviele Elemente es hat, weil Du selber sagen willst, daß es k Elemente haben soll, auch wenn k =/= n gilt…?

    Und wenn Du Dein Array fragst, wieviele Elemente es hat, dann kannst Du genau so gut fragen, welchen start- oder end-Index es hat.

    "Ich bestimme das lieber selber"? Echt jetzt? Mit einem kompletten Closed source System bist Du bei Apple da genau richtig. ;)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?