2014年8月25日月曜日

開発環境

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

ピラニアパズル(p.223)

コード(Xcode)

main.swift

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

import Foundation

println("構造体1.")
struct Fish {
    let name:String;
    let species:String;
    var teeth:Int;
    var age:Int
}

func catalog(fish:Fish) {
    println("\(fish.name)は\(fish.species)であり、歯は\(fish.teeth)本あります。年齢は\(fish.age)才です。")
}

var snappy:Fish = Fish(name: "スナッピー", species: "ピラニア", teeth: 69, age: 4)
catalog(snappy)

println("クラス.")
// The Swift Programming Languageによると、クラスには構造体には無い機能があるみたい(例えば継承できるとか)
class Fish1 {
    let name:String
    let species:String
    var teeth:Int
    var age:Int
    init(name:String, species:String, teeth:Int, age:Int) {
        self.name = name
        self.species = species
        self.teeth = teeth
        self.age = age
    }
    var catalog:String { return "\(self.name)は\(self.species)であり、歯は\(self.teeth)本あります。年齢は\(self.age)才です。" }
}

var snappy1:Fish1 = Fish1(name: "スナッピー", species: "ピラニア", teeth: 69, age: 4)
println(snappy1.catalog)

// 最初の構造体で、catalogもselfを使って構造自身に含めた場合
println("構造体2.")
struct Fish2 {
    let name:String;
    let species:String;
    var teeth:Int;
    var age:Int
    var catalog:String { return "\(self.name)は\(self.species)であり、歯は\(self.teeth)本あります。年齢は\(self.age)才です。"  }
}

var snappy2:Fish2 = Fish2(name: "スナッピー", species: "ピラニア", teeth: 69, age: 4)
println(snappy2.catalog)

入出力結果(Console Output, Terminal)

構造体1.
スナッピーはピラニアであり、歯は69本あります。年齢は4才です。
クラス
スナッピーはピラニアであり、歯は69本あります。年齢は4才です。
構造体2.
スナッピーはピラニアであり、歯は69本あります。年齢は4才です。
Program ended with exit code: 0

0 コメント:

コメントを投稿