ho notato un sacco di veloci costruito ins prendere o tornare Int
s e non UInt
s:Qual è la logica dei metodi di risoluzione di Swift che utilizzano `Int`s?
Ecco alcuni esempi: Array
mutating func reserveCapacity(minimumCapacity: Int)
var capacity: Int { get }
init(count: Int, repeatedValue: T)
mutating func removeAtIndex(index: Int) -> T
Dato che la lingua è completamente nuovo, e assumendo che questa scelta progettuale non è stata arbitraria - Mi chiedo: Perché i dati incorporati rapidi prendono Int
s e non UInt
s?
Alcune note: Chiedendo perché sto lavorando su alcune collezioni me stesso e mi chiedo che tipo dovrei usare per cose come reserveCapacity
ecc Quello che mi aspetto che naturalmente è per reserveCapacity
di prendere una UInt
invece.
Per quello che vale [è stata anche la mia ipotesi] (http://chat.stackoverflow.com/transcript/message/19026152#19026152) ma è un'ipotesi piuttosto selvaggia e facendo 'let x: UInt = 3 'lo aggiusterà o' test (UInt (x)) '. Entrambi sembrano molto più "Swiftic" –
Beh, non sono d'accordo ;-) Penso che sembri molto più pulito senza l'annotazione/conversione del tipo. – Atomix
In particolare, 'UInt (x)' potrebbe non essere nemmeno possibile. Potrebbe fallire. Devi pensarci ogni volta che lo usi.E se usi 'x: UInt', lo stesso problema si presenta se devi passarlo a qualcosa che richiede' Int'. Immagina il caso non raro in cui 'x' è' scala' e potrebbe essere applicato a entrambi i lati positivi o negativi, comprese le cose che dovrebbero essere solo positive. Si entra in un flip-flop, si cambia la costante 'scale' tra' Int' e 'UInt', cercando di ottenere quello che è più spesso quello che si desidera (o si creano * due * costanti, che è ancora più brutto). –