TGISF – who foo

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

  • TGISF – who foo

    Thank God, It's Swift-Friday. :)

    Letzten Freitag hatte ich schon mal so einen spaßigen Beitrag zu Swift. Ich fand ihn zumindest lustig. ;) Und gerade ist mir spontan dann eine Art Follow-Up eingefallen.
    Diesmal habe ich 8 Zeilen Code (bzw. 6, wenn man die blöden einzelnstehenden Klammern rausrechnet), in denen 8-mal das 'Wort' foo vorkommt.
    Quizfrage: Wieviele verschiedene foos sind das? ?(

    Quellcode

    1. struct Bar {
    2. var foo: Int
    3. init?(foo: Int?) {
    4. guard let foo = foo else { return nil }
    5. self.foo = foo
    6. }
    7. }
    8. var foo = Bar(foo: 1)

    PS: Habt einen schönen Freitag, Kater oder verlängertes WE! ;)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • MCDan schrieb:

    Ich finde, ein Programmierer sollte für die verwirrende Verwendung von gleichen Variablennamen erschlagen werden. :D
    100% ACK

    Ein Ausbildungskollege schrieb seinerzeit mein Assembler-Programm ab und durfte es prompt an der Tafel präsentieren. Unser Ausbilder hat ihn dann gefaltet, weil seine (meine!) Sprungmarken "Schwupp1", "Schwupp2" etc. hießen. Mann, habe ich gelacht... :D

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

    Ich finde, ein Programmierer sollte für die verwirrende Verwendung von gleichen Variablennamen erschlagen werden. :D

    Nichts sagende Variablennamen sollten eh verboten werden, oder eine sehr seltene Ausnahme bleiben. :P
    Du gehst zum Lachen abet wenigstens in den Keller, oder? ;)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • MCDan schrieb:


    Nichts sagende Variablennamen sollten eh verboten werden, oder eine sehr seltene Ausnahme bleiben. :P
    Nicht nur das ... ich durfte mich vor ein paar Tagen dafür "verteidigen", dass ich doch tatsächlich grundsätzlich bei Instanz-Variablen – in Swift – ein "self" schreibe. Denn bei Swift muss man das ja nicht mehr, nur wenn der Compiler da mal was und eventuell verwechseln könnte ...

    Und da hat doch mal einer behauptet, C wäre eine "Write-Only"-Language ...
  • In dem Struct fehlt übrigens noch ein foo:


    C-Quellcode

    1. struct Bar {
    2. var foo: Int
    3. init?(foo foo: Int?) {
    4. guard let foo = foo else { return nil }
    5. self.foo = foo
    6. }
    7. }
    Im Übrigen sollte foo in jeder Programmiersprache als Schlüsselwort definiert werden, dass an die Tastatur Netzspannung anlegt – allerdings zur Programmier- und nicht zur Laufzeit. ;)
    „Meine Komplikation hatte eine Komplikation.“
  • macmoonshine schrieb:

    In dem Struct fehlt übrigens noch ein foo:

    C-Quellcode

    1. init?(foo foo: Int?) { … }

    Richtig. Das ändert jedoch nichts an der Lösung meiner Frage, trägt aber vielleicht zum besseren Verständnis bei. Man muß halt noch zwischen argument label und parameter name unterscheiden.

    Michael schrieb:

    torquato schrieb:

    Wieviele verschiedene foos sind das?
    Ich sag 4. :)
    Danke @Michael fürs Mitspielen.^^
    Die korrekte Antwort lautet allerdings 5!

    Hier habe ich es inline aufgedröselt:

    Quellcode

    1. struct Bar {
    2. // 1. Instanzvariable
    3. var foo: Int
    4. // 2. argument label UND
    5. // 3. parameter name
    6. init?(foo: Int?) {
    7. // 4. shadowed lokale Variable
    8. // 3. parameter name
    9. guard let foo = foo else { return nil }
    10. // 1. Instanzvariable
    11. // 4. shadowed lokale Variable
    12. self.foo = foo
    13. }
    14. }
    15. // 5. globale Variable
    16. // 2. argument label
    17. var foo = Bar(foo: 1)
    Alles anzeigen

    @macmoonshine Wie Du siehst, hätte ein doppeltes foo im init keine Änderung am Ergebnis gebracht. ;)

    macmoonshine schrieb:

    Im Übrigen sollte foo in jeder Programmiersprache als Schlüsselwort definiert werden, dass an die Tastatur Netzspannung anlegt – allerdings zur Programmier- und nicht zur Laufzeit. ;)

    :D
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?
  • torquato schrieb:

    Quizfrage: Wieviele verschiedene foos sind das? ?(

    Michael schrieb:

    Ok, ich dachte es geht nur um die Variablen.

    Mmmhhhhh… o_O

    Paßt schon.^^
    Im ersten Impuls hatte ich übrigens mit 6 als Lösung gerechnet. Ich bin mir fast sicher, daß, wenn hier ein Swift-Compiler-Guru vorbeischneit, wir noch eine ganz andere Lösung bekommen würden. ;)

    Mir ging's hier nur um Spaß mit Code. :)
    Das iPhone sagt: "Zum Antworten streichen". Wie? Echt Jetzt? Muß ich erst die Wohnung streichen!?