Грешка в троичния синтакс на Swift

Програмирах в Objective-C през цялото време и съм нов в Swift. Тази грешка, която ми дава Xcode, наистина ме обърква.

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

На този ред възнамерявах да използвам троичен. leftTopIndex и rightTopIndex са тип Int. Въпреки това Xcode ми дава тези на този конкретен ред,

Последователните изрази на ред трябва да бъдат разделени с ';' Очакван израз

Може ли някой да ми каже какво означават те? Благодаря.


person Bigman    schedule 07.03.2015    source източник


Отговори (3)


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

var topViewIndexForIndexAdjust = ifLeft ? leftTopIndex : rightTopIndex
person vacawama    schedule 07.03.2015

Трябва да използвате празни места, за да разделите операндите и операторите:

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

Swift е много стриктен по отношение на това - дори този привидно правилен ред код:

let val =12

генерира грешка при компилация.

person Antonio    schedule 07.03.2015

Борих се с загадъчните съобщения за грешка на Swift за троични оператори

Грешка 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
person Naishta    schedule 21.07.2017