Swift 3,0
Rozważmy prostą koncepcję: -
Podczas korzystania if...else
w jednej linii operacje powinny być jedno- albo musimy kolega operacji pod parenthesis
aby jako pojedyncza operacja, w naszym przypadku append(val)
jest pojedynczą operacją, ale myDict[key] = [val]
jest wielokrotnością (jest wielokrotnością () jest jednym i =
przydziałów to jeden i [val]
jest jeden), więc jesteśmy grupując je w jeden przy użyciu parenthesis
.
W bardziej prosty sposób należy rozważyć następujące arithmatic operations
.
//I need 10-5 = 5
let a = 2*4+2-4-3*5
print(a) // -9
//so we can seprate by()
let b = ((2*4)+2)-(4-3)*5
print(b) //5
Niniejszym instruujemy kompilator w sposób nieprzewidziany pod numerem let a
.
także zobaczyć,
let a:Int? = nil
var b:Int? = nil
let d = 10
let c = a ?? 10 * b ?? d
Tutaj let c
jest błędna instrukcja, błąd jest
Value of optional type 'Int?' not unwrapped; did you mean to use '!' or '?'?
Jeśli mogę zmusić unwrapping
się optionals a and b
, wtedy błąd będzie,
unexpectedly found nil while unwrapping an Optional value
Stała stała c
staje się
let c = a ?? 10 * (b ?? d) //100
To należy użyć parenthesis
wokół wartości default
.
myDict[key]?.append(val) ?? (myDict[key] = [val])
Używasz 'zerowego koalescingu' dla złego celu. Nie używaj ich do ___ cokolwiek, działa tylko z tego powodu. – nayem
@nayem Czy możesz rozwinąć? Dlaczego to jest złe? – GoldenJoe