2014年9月1日月曜日

開発環境

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

コードマグネット(p.256)

コード(Xcode)

main.swift

//
//  main.swift
//  sample256
//
//  Created by kamimura on 9/1/14.
//  Copyright (c) 2014 kamimura. All rights reserved.
//

import Foundation

enum UnitOfMeasures {
    case Count, Pounds, Pints
    var units:String {
        switch self {
        case .Count:
            return "個"
        case .Pounds:
            return "ポンド"
        case .Pints:
            return "パイント"
        }
    }
}

struct FruitOrder<T> {
    let name:String
    let country:String
    let amount:T
    let units:UnitOfMeasures
    func display() {
        println("\(self.amount)\(self.units.units)の\(self.name)です。")
    }
}

class FruitOrder1<T> {
    let name:String
    let country:String
    let amount:T
    let units:UnitOfMeasures
    
    init(name:String, country:String, amount:T, units:UnitOfMeasures) {
        self.name = name
        self.country = country
        self.amount = amount
        self.units = units
    }
    
    func display() {
        println("\(self.amount)\(self.units.units)の\(self.name)です。")
    }
}

println("構造体")
let apple:FruitOrder = FruitOrder(name: "リンゴ", country: "イギリス", amount: 144, units: .Count)
let strawberries:FruitOrder = FruitOrder(name: "いちご", country: "スペイン", amount: 17.6, units: .Pounds)
let oj:FruitOrder = FruitOrder(name: "オレンジジュース", country: "アメリカ", amount: 10.5, units: .Pints)

apple.display()
strawberries.display()
oj.display()

println("クラス")
let apple1:FruitOrder1 = FruitOrder1(name: "リンゴ", country: "イギリス", amount: 144, units: .Count)
let strawberries1:FruitOrder1 = FruitOrder1(name: "いちご", country: "スペイン", amount: 17.6, units: .Pounds)
let oj1:FruitOrder1 = FruitOrder1(name: "オレンジジュース", country: "アメリカ", amount: 10.5, units: .Pints)

apple1.display()
strawberries1.display()
oj1.display()

入出力結果(Console Output, Terminal)

構造体
144個のリンゴです。
17.6ポンドのいちごです。
10.5パイントのオレンジジュースです。
クラス
144個のリンゴです。
17.6ポンドのいちごです。
10.5パイントのオレンジジュースです。
Program ended with exit code: 0

0 コメント:

コメントを投稿