2015-03-07 4 views
2

Я все время программировал в Objective-C, и я новичок в Swift. Эта ошибка Xcode меня действительно путает.Быстрая тройная ошибка синтаксиса

func renderBufferAreaBAUp(yOffset: CGFloat, amount: CGFloat, ifLeft: Bool) 
{  
     var topViewIndexForIndexAdjust = ifLeft?leftTopIndex:rightTopIndex 
} 

На этой линии я намеревался использовать тройной. leftTopIndex и rightTopIndex - оба типа Int. Однако Xcode дает мне те, которые указаны в этой строке,

Последовательные утверждения на строке должны быть разделены символом ';' Ожидаемое выражение

Может ли кто-нибудь сказать мне, что это значит? Благодарю.

ответ

11

Быстрые сообщения об ошибках часто являются загадочными и не помогают. Ваша настоящая проблема в том, что Swift нуждается в некотором пространстве вокруг ? и :.

var topViewIndexForIndexAdjust = ifLeft ? leftTopIndex : rightTopIndex 
0

Вы должны использовать пробелы для разделения операндов и операторов:

var topViewIndexForIndexAdjust = ifLeft ? leftTopIndex : rightTopIndex 
            ^^   ^^ 

Swift очень строга на что - даже это, видимо, правильно строки кода:

let val =12 

генерирует ошибку компиляции ,

0

Боролся с криптическими Swift сообщений об ошибках для троичных операторов

Error 1

incrementValue = incrementValue == 0?1:incrementValue //errors saying add ";", consecutive statements must be separated by ";" 

Ошибка 2

incrementValue = incrementValue = 0 ? 1 : incrementValue //error - Assigning a variable to itself 

Правильное один - с промежутками и С ==

incrementValue = incrementValue == 0 ? 1 : incrementValue //worked