[[Swift実践入門]]
#norelated
#contents
* 1.1 言語の特徴 [#d365b73a]
** 静的型付き言語 [#k92061d1]
Swiftは、型注釈で型を指定できる。(型安全性)
#code(csharp){{
var a: Int // aはInt型
a = 456
a = "abc" // String型の代入はエラー
}}
- 実行結果
http://swift.sandbox.bluemix.net/#/repl/59ba2fd6922e3e3e3ba17b98
** nilの許容性をコントロール可能 [#t2d503ff]
nilは、「値が存在しない」ことを示す単語。
- 2値論理: true / false
- 3値論理: true / false / nil
基本的に、nilを代入できない。
例外的に、nilを代入できる仕組みとして、Optional型が用意されている。
#code(csharp){{
let a: Optional<Int> // aはOptional<Int>型(nilも代入できる)
let b: Int // bはInt型(nilを代入できない)
a = nil
b = nil
}}
- 実行結果
http://swift.sandbox.bluemix.net/#/repl/59ba2fa3922e3e3e3ba17b96
** 型推論による簡素な記述 [#sb6b72af]
Swiftには、型推論という機能が用意されており、型注釈を省略しても一応動作する。
(型のエラーが発生した場合は、デバッグ時に型注釈を追記していけばOK)
#code(csharp){{
let a = 123
let b = "abc"
print (type(of: a)) // Int
print (type(of: b)) // String
}}
- 実行結果
http://swift.sandbox.bluemix.net/#/repl/59ba2f63922e3e3e3ba17b94
** ジェネリクスによる汎用的な記述 [#s0294bec]
Swiftには、ジェネリクス(総称型)が用意されている。
ジェネリクスは、関数で扱う引数の型を「型引数」で指定/変更できる機能。
ジェネリクスが使えると、似たような機能を一つのまとめることができるので便利。
#code(csharp){{
// ジェネリクスを利用しているmax(_:_:)関数
// func max<T : Comparable>(_ x: T, _ y: T) -> T
let x = 123
let y = 456
let z = max(x, y)
print(z) // 456
let a = "abc"
let b = "def"
let c = max(a, b)
print(c) // "def"
}}
- 実行結果
http://swift.sandbox.bluemix.net/#/repl/59ba3269922e3e3e3ba17b9a
** Objective-Cと連携可能 [#w489559f]
macOS向けの「Cocoa」やiOS向けの「Cocoa Touch」は、大部分がObjective-Cで書かれているフレームワーク。
Swiftは、Objective-Cと高い互換性を持っており、SwiftからCocoaやCocoa Touchの資産も利用可能。