2014年8月31日日曜日

開発環境

Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の5章(構造体、共用体、ビットフィールド: 独自の構造を使う)、コンパイラになってみよう(p.251)をSwiftで考えてみる。

コンパイラになってみよう(p.251)

コード(Xcode)

main.swift

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

import Foundation

struct Margarita<T> {
    let tequila:Double
    let cointreau:Double
    let citrus:T
}

func f(m:Margarita<Double>) {
    println("\(m.tequila)単位ののテキーラ\n\(m.cointreau)単位のコアントロー\n\(m.citrus)単位のジュース")
}

var m1:Margarita = Margarita(tequila: 2.0, cointreau: 1.0, citrus: 0.5)
var m2 = Margarita(tequila: 2.0, cointreau: 1.0, citrus: 0.5)
// 次はエラー
// var m3
// 変数の宣言のみで初期化しない場合は型の指定が必要
var m3:Margarita<Double>
m3 = Margarita(tequila: 2.0, cointreau: 1.0, citrus: 0.5)

let m4:Margarita = Margarita(tequila: 2.0, cointreau: 1.0, citrus: 0.5)
let m5 = Margarita(tequila: 2.0, cointreau: 1.0, citrus: 0.5)

// 次はエラー
// let m6
// let m6:Margarita<Double>
// 定数は宣言時に初期化が必要

for m in [m1, m2, m3, m4, m5] {
    f(m)
}

入出力結果(Console Output, Terminal)

2.0単位ののテキーラ
1.0単位のコアントロー
0.5単位のジュース
2.0単位ののテキーラ
1.0単位のコアントロー
0.5単位のジュース
2.0単位ののテキーラ
1.0単位のコアントロー
0.5単位のジュース
2.0単位ののテキーラ
1.0単位のコアントロー
0.5単位のジュース
2.0単位ののテキーラ
1.0単位のコアントロー
0.5単位のジュース
Program ended with exit code: 0

0 コメント:

コメントを投稿