[Swift]: Learning 2

swift

04/16/2019


Common usage for optional

The following two code blocks are equivalent

SWIFT
if emoji[card.identifier] != nill {
return emoji[card.identifier]!
} else {
return "?"
}
SWIFT
return emoji[card.identifier] ?? "?"
  • nill means "the absence of a valid object."
  • this only works for objects, not fur structures, basic C types, or enumeration values
  • Swift's optionals let you indicate the absence of a value for any type at all, without the need for special constants.

Use of Dictionary

SWIFT
var emojiChoices = ["πŸ¦‡", "😱", "πŸ™€", "😈","πŸŽƒ", "πŸ‘»", "🍭", "🍬", "🍎"]
var emoji = [Int:String]()
func emoji(for card: Card) -> String {
if emoji[card.identifier] == nil, emojiChoices.count > 0 {
let randIndex = Int (arc4random_uniform(UInt32(emojiChoices.count)))
emoji[card.identifier] = emojiChoices.remove(at: randIndex)
}
return emoji[card.identifier] ?? "?"
}

The following codes are equivalent, but first one is preferred

SWIFT
var emoji = [Int:String]()
SWIFT
var emoji = Dictionary<Int, String>()
  • Dictionary is an implementation of Map like HashMap in java
  • arc4random_uniform is a useful in generating random Int. But uses unsigned integer. Swift doesn't support automatic conversion, so casting is needed manually

WRITTEN BY

Keeping a record