Open7
The Basics
数値リテラル
整数リテラルのデフォルトの型はInt型
let a = 123456 // Int型
浮動小数点リテラルのデフォルトの型はDouble型
let a = 1.0 // Double型
数値型の種類
浮動小数点型
代表的なものはFloat型とDouble型
型 | ビット数 | およそ表すことのできる範囲 | 値の精度 |
---|---|---|---|
Float型 | 32ビット | 最小で6桁の精度 | |
Double型 | 64ビット | 最小でも15桁の精度 |
let a: Float = 12345678.9 // 1.234568e+07
let b: Double = 12345678.9 // 12345678.9
Static Property
isInfinite
:値が無限大かどうかを表す
let c: Double = 1.0 / 0.0
c.isInfinite // true
isNaN
:値がNaN(Not a Number)かどうかを表す
let d: Double = 0.0 / 0.0
c.isNaN // true
型エイリアス
定義方法:typealias 新しい型名 = 型名
typealias CLLocationDegrees = Double
特殊文字の表現
TODO: Line FeedとCarriage Returnの違い調べる
\n // Line Feed
\r // Carriage Return
\\ // Backslash
\0 // null文字
複数行の文字列リテラル
複数行の文字列リテラル内のインデントは終了の"""の位置が基準になり、終了の"""より浅いか深いかによってリテラルから生成される文字列に反映される。
let f = """
あいうえお
かきくけこ
さしすせそ
"""
// ^この"""が基準となる
例えば下記の場合は実行結果のようになる。
let g = """
あいうえお
かきくけこ
さしすせそ
"""
実行結果
あいうえお
かきくけこ
さしすせそ
Foundation
Swiftの標準ライブラリには高度な操作は用意されておらず、コアライブラリのFoundationで用意されている。
数値型の例
import Foundation
log(1.0) // 0
String型の例
import Foundation
let option = String.CompareOptions.caseInsensitive
let comparedWords = "abc".compare("ABC", options: option)
comparedWords == ComparisonResult.orderedSame // true
Unwrapを伴わずにOptionals型の値の変換を行うメソッド
map(_:)メソッド
引数に値を変換するClosureを渡す。
let a = Optional(17)
let b = a.map({ value in value * 3 }) // 51
type (of: b) // Optional<Int>.Type
flatMap(_:)メソッド
map()メソッドと同様に引数に値を変換するClosureを渡すが、Closureの戻り値はOptional<Wrapped>型である。
下記の例ではOptional型の定数に対して更に値を返すか不確かな操作を行なっているため、flatMap()ではなくmap()を用いるとInt??型となってしまう。
flatMap()を用いた場合
let j = Optional("123")
let k = j.flatMap({ value in Int(value) }) // 123
type(of: k) // Optional<Int>.Type
map()を用いた場合
let l = Optional("123")
let m = l.map({ value in Int(value) }) // 123
type(of: m) // Optional<Optional<Int>>.Type