2014-10-22 26 views
8

Istnieje fragment kodu w szybkiej książce dostarczonej przez Apple. Napisałem to na boisku xcode, ale pokazuje "Operator nie jest znanym operatorem binarnym" i "Używanie nierozwiązanego identyfikatora". Kod to:Korzystanie z ".." z pętlą for

Xcode Playground code Zgodnie z książką operator ".." może być użyty z pętlą for, aby utworzyć zakres, który pomija jego górną wartość. Ale wyświetla błąd. Zmiana operatora "..." na "..." wydaje się naprawić błąd. Ale dlaczego "..." nie działa?

+0

Potrzebujesz najnowszej wersji książki. Wersja, którą masz, przeznaczona jest dla wersji beta Swifta. – Fogmeister

+0

Dzięki Fogmeister. –

Odpowiedz

16

Masz nieaktualną wersję tej szybkiej książki.

Proszę bardzo. Aktualna wersja na wpół zamkniętym przedziale jest 0..<3 nie 0..3https://developer.apple.com/library/ios/documentation/swift/conceptual/Swift_Programming_Language/BasicOperators.html

+0

Jeszcze jedno, czy tego typu problemy będą się częściej pojawiać? Czy będą stale zmieniać składnię szybkiego, jeśli będą mieli na to ochotę? –

+0

Cóż w najnowszej wersji (1.1) dodali możliwość opcjonalnych zwrotów z init. To był błąd włamujący i potrzebował zmian w kodzie, aby go naprawić. W odpowiedzi na twoje pytanie, prawdopodobnie tak. Swift wciąż jest bardzo młodym językiem. Zmiany między Twoim kodem a bieżącą wersją zostały wykonane przed wersją 1.0 i tak się spodziewano. Od teraz będzie mniej zmian, ale nie oznacza to, że nic się nie zmieni. – Fogmeister

+0

Czytałem starą wersję szybkiego ibook'a, a nawet Xcode było 6.0.1. Zaktualizowałem oba. Dzięki za informację i szybką odpowiedź Fogmeister. –

1

Rzeczy są teraz różne w Swift 2. Oto jak to zrobić teraz w Xcode 7 (oryginał pytanie pokazuje wysoko w wyszukiwarce Google dla tego konkretnego problemu) :

for i in 1 ..< Process.argc { 
    let index = Int(i); 

    if let arg = String.fromCString(Process.unsafeArgv[index]) { 
     switch arg { 
     case "-whatever": 
      // do something 

     default: 
      break 
     } 
    } 
} 
+0

Ah, przepraszam. Pierwotnie przyszedł mi tutaj problem "..", ale próbowałem także przetwarzać argumenty wiersza poleceń. Moje zamieszczone rozwiązanie oczywiście zawiera więcej niż to konieczne, ale przypuszczam, że nie zaszkodzi. –

Powiązane problemy