[[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の資産も利用可能。

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS