2016.12.27

詳解 Swift 第3版 正誤情報

詳解Swift 第3版

本文中に以下のような間違い、および注意事項がありました。お詫び申し上げるとともに、訂正させていただきます。

p.032 一番下の段落

誤: sample1 という実行ファイルが

正: primes(Linuxの場合は main)という実行ファイルが

--------------------------------
p.127 中段

let nsstr = sample as NSString        // キャスト(型変換)

※ この記述は macOSでは動作しますが、Ubuntu では動作しません。
※ 下記 p.365 に対するコメントを参照して下さい。
※ サンプルでは次のように記述しています。

#if os(macOS)
let nsstr = sample as NSString        // キャスト(型変換)
#else
let nsstr = NSString(string: sample)  // Linux
#endif

--------------------------------
p.163 List7-4
※ Linuxでは import Foundation を追加しなければ動作しません。
   String型のメソッド hasPrefix が標準ライブラリに存在しないようです。

--------------------------------
p.195 集合型 Set<T> について

※ 集合型については「11.4 集合とプロトコル」を参照して下さい。

--------------------------------
p.214 後半の例

誤: print(who)              // “nil” と表示

正:
    if who == nil {
        print(“nil”)        // “nil” と表示
    }

※ Swift処理系側の変更により、オプショナル型を printで表示しようとすると、警告が表示されるようになったため。

--------------------------------
p.249 List11-5の型名が間違っている。

誤: WordWithRuby
正: Name

具体的に変更されるのは次の2行。

誤: enum WordWithRuby {
正: enum Name {

誤:    static func ==(lhs:WordWithRuby, rhs:WordWithRuby) -> Bool {
正:    static func ==(lhs:Name, rhs:Name) -> Bool {

--------------------------------
p.252  List11-9 の「Deteable」の綴りが間違っている

誤: Dateble
正: Dateable

--------------------------------
p.272  List12-3 に修正点あり

誤: print(“x:”, x)  // “41” → Optional(41), “gown” → nil を表示

正:
        if let n = x {
            print(“x:”, n); // “41” → 41 を表示
        }else {
            print(“x: nil”); // “gown” → nil を表示
        }

※ Swift処理系側の変更により、オプショナル型を printで表示しようとすると、警告が表示されるようになったため。

--------------------------------
p.311
※ コード例を動作させるには、Linuxでは import Foundation が必要です。
   String型のメソッド hasSuffix が標準ライブラリに存在しないようです。

--------------------------------
p.311 Listの番号にずれ

誤: List13-6

正: List13-7

--------------------------------
p.332 表示例を変更

誤: let b = f(2) + [“ζ”]    // [nil, nil, “ζ”]

正: let b = f(2) + [“ζ”]    // [nil, nil, Optional(“ζ”)]

※ Swift処理系側の変更により、オプショナル型の表示方式が変更されたため。

--------------------------------
p.365
「15.3 対応づけられたデータ型」の記述について

 Objective-C のクラスと Swiftの型の間の対応付けは、Linux環境においては本文に記載の通りには動作しません(Ubuntu 14.04, Ubuntu 16.04上で swift 3.0.1 を使って動作を確認)。
 NSString と String、NSURL と URL などは、それぞれ個別にはインスタンスを生成して動作させることができますが、as 演算子を使って NSString と String、NSURL と URL などを相互利用することができません。

--------------------------------
「16 Objective-Cとの連携」の記述について

 Linux上では、Objective-C と Swiftを連携させるプログラムは動作しません。

 

--------------------------------
p.470 Zip2Sequence のプログラム例

誤: var zom = Zip2Sequence([“A”, “B”, “C”, “D”], [4, 6, 7])

正: var zom = zip([“A”, “B”, “C”, “D”], [4, 6, 7])