2014年8月25日月曜日

開発環境

Head First JavaScript Programming (Eric T. Freeman (著)、 Elisabeth Robson (著)、 O'Reilly Media )のChapter 7(Types, Equality, Conversion and All That Jazz: Serious types))、SHARPEN YOUR PENCIL(p.293)をSwiftで考えてみる。

SHARPEN YOUR PENCIL(p.293)

コード(Xcode)

main.swift

//
//  main.swift
//  sample293
//
//  Created by kamimura on 8/25/14.
//  Copyright (c) 2014 kamimura. All rights reserved.
//

import Foundation

func f<T>(a:[T?]) {
    for x in a {
        print("x = \(x), ")
        if x {
            println("true")
        } else {
            println("false")
        }
    }
}

var a:String? = ""
var b:String? = "a"
var c:String? = nil
var d:String?
var strs:[String?] = [a, b, c, d]
f(strs)

var e:Int? = 0
var f:Int? = 1
var g:Int? = 10
var h:Int? = nil
var i:Int?
var ints:[Int?] = [e, f, g, h, i]
f(ints)

var j:[Int]? = []
var k:[Int]? = [0]
var l:[Int]? = nil
var m:[Int]?
var arrays:[[Int]?] = [j, k, l, m]
f(arrays)

var n:Dictionary<String, Int>? = [:]
var o:Dictionary<String, Int>? = ["a":1]
var p:Dictionary<String, Int>? = nil
var q:Dictionary<String, Int>?
var dictionaries:[Dictionary<String, Int>?] = [n, o, p, q]
f(dictionaries)

var r:Bool? = true
var s:Bool? = false
var t:Bool? = nil
var u:Bool?
var booleans:[Bool?] = [r, s, t, u]
f(booleans)

print("s = \(s), !s = \(!s): ")
if !s {
    if s! {
        print("true")
    } else {
        print("false")
    }
}
println()

print("s = \(s), s != nil = \(s! != nil):")
if s != nil {
    if s {
        print("true")
    } else {
        print("false")
    }
}
println()

if s != nil && s {
    println("true")
} else {
    println("false")
}

println("t = \(t), t == nil = \(t == nil)")

入出力結果(Console Output)

x = Optional(""), true
x = Optional("a"), true
x = nil, false
x = nil, false
x = Optional(0), true
x = Optional(1), true
x = Optional(10), true
x = nil, false
x = nil, false
x = Optional([]), true
x = Optional([0]), true
x = nil, false
x = nil, false
x = Optional([:]), true
x = Optional(["a": 1]), true
x = nil, false
x = nil, false
x = Optional(true), true
x = Optional(false), true
x = nil, false
x = nil, false
s = Optional(false), !s = false: 
s = Optional(false), s != nil = true:true
true
t = nil, t == nil = true
Program ended with exit code: 0

Optionalの場合、falseでもtrueになるのが、まだ慣れなくて不思議な感じ。

0 コメント:

コメントを投稿