2016-08-04 31 views

Odpowiedz

115

w Swift 3 składnia ta uległa zmianie.

Co było

if let x = y, a = b where a == x {

Czy teraz

if let x = y, let a = b, a == x {

Uzasadnieniem jest to, że każdy sub-klauzula if ... { jest teraz niezależną logiczna testu.

Zobacz Xcode Release notes & the Swift Evolution proposal, aby uzyskać więcej informacji na temat tej zmiany.

+4

kolejna zmiana. Wszędzie w dokumentacji, gdzie klauzula jest nadal obecna. W każdym razie użycie sugerowanego formularza działa dobrze. –

+0

Czy ta zmiana jest opisana nigdzie indziej niż w (nie w pełni publicznych) informacjach o wydaniu Xcode 8 Beta 4? Na przykład. ewolucja/inne oficjalne dokumenty? Mogę zauważyć dla innych czytelników, że wciąż jesteśmy proszeni o użycie klauzuli "where" do oddzielenia zmiennej od warunkowego, jeśli używamy np. Swift 3.0-dev w IBM Sandbox. – dfri

+0

Dokumentacja zaktualizowana do Swift 3 nadal ma miejsce w wersji online. Stwierdzenie, że jest to mylące, jest niedopowiedzeniem. Wygląda na to, że zmieniają rzeczy tylko ze względu na to, jak w przypadku DispatchQueue, który teraz potrzebuje terminu, a nie kiedy. –

2

Przykład z dwóch warunków

if let x = y, let a = b, a == x && !x.isEmpty { 
3

w Xcode 9

if let str = textField.text as String!, !str.isEmpty 
{ 
    params[key] = str 
    TextFieldHelper.setup(textField: textField) 
} 
else 
{ 
    TextFieldHelper.error(textField: textField) 
}