2014年9月15日月曜日

開発環境

Head First JavaScript Programming (Eric T. Freeman (著)、 Elisabeth Robson (著)、 O'Reilly Media )のChapter 10(Liberated functions: First Class Functions)、EXERCISE(p.463)をSwiftで考えてみる。

EXERCISE(p.463)

コード(Xcode)

main.swift

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

import Foundation

struct Cola : Printable {
    let name:String
    let calories:Int
    let color:String
    let sold:Int
    var description:String { return "Name: \(name), Calories: \(calories), Color: \(color), Sold: \(sold)"}
}

var products:[Cola] = [
    Cola( name: "Grapefruit", calories: 170, color: "red", sold: 8200 ),
    Cola( name: "Orange", calories: 160, color: "orange", sold: 12101 ),
    Cola( name: "Cola", calories: 210, color: "caramel", sold: 25412 ),
    Cola( name: "Diet Cola", calories: 0, color: "caramel", sold: 43922 ),
    Cola( name: "Lemon", calories: 200, color: "clear", sold: 14983 ),
    Cola( name: "Raspberry", calories: 180, color: "pink", sold: 9427 ),
    Cola( name: "Root Beer", calories: 200, color: "caramel", sold: 9909 ),
    Cola( name: "Water", calories: 0, color: "clear", sold: 62123 )
]

func compareName(colaA:Cola, colaB:Cola) -> Bool {
    return colaA.name < colaB.name
}

func compareCalories(colaA:Cola, colaB:Cola) -> Bool {
    return colaA.calories < colaB.calories
}

func compareColor(colaA:Cola, colaB:Cola) -> Bool {
    return colaA.color < colaB.color
}

func printProducts(products:[Cola]) {
    for product in products {
        println(product)
    }
}

products.sort(compareName)
println("Products sorted by name:")
printProducts(products)

products.sort(compareCalories)
println("Products sorted by calroies:")
printProducts(products)

products.sort(compareColor)
println("products sorted by color:")
printProducts(products)

入出力結果(Console Output)

Products sorted by name:
Name: Cola, Calories: 210, Color: caramel, Sold: 25412
Name: Diet Cola, Calories: 0, Color: caramel, Sold: 43922
Name: Grapefruit, Calories: 170, Color: red, Sold: 8200
Name: Lemon, Calories: 200, Color: clear, Sold: 14983
Name: Orange, Calories: 160, Color: orange, Sold: 12101
Name: Raspberry, Calories: 180, Color: pink, Sold: 9427
Name: Root Beer, Calories: 200, Color: caramel, Sold: 9909
Name: Water, Calories: 0, Color: clear, Sold: 62123
Products sorted by calroies:
Name: Diet Cola, Calories: 0, Color: caramel, Sold: 43922
Name: Water, Calories: 0, Color: clear, Sold: 62123
Name: Orange, Calories: 160, Color: orange, Sold: 12101
Name: Grapefruit, Calories: 170, Color: red, Sold: 8200
Name: Raspberry, Calories: 180, Color: pink, Sold: 9427
Name: Lemon, Calories: 200, Color: clear, Sold: 14983
Name: Root Beer, Calories: 200, Color: caramel, Sold: 9909
Name: Cola, Calories: 210, Color: caramel, Sold: 25412
products sorted by color:
Name: Diet Cola, Calories: 0, Color: caramel, Sold: 43922
Name: Root Beer, Calories: 200, Color: caramel, Sold: 9909
Name: Cola, Calories: 210, Color: caramel, Sold: 25412
Name: Water, Calories: 0, Color: clear, Sold: 62123
Name: Lemon, Calories: 200, Color: clear, Sold: 14983
Name: Orange, Calories: 160, Color: orange, Sold: 12101
Name: Raspberry, Calories: 180, Color: pink, Sold: 9427
Name: Grapefruit, Calories: 170, Color: red, Sold: 8200
Program ended with exit code: 0

0 コメント:

コメントを投稿