開発環境
- OS X Mavericks - Apple(OS)
- Xcode 6.0 Beta
- Swift (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の5章(構造体、共用体、ビットフィールド: 独自の構造を使う)、長いエクササイズ(p.228)をSwiftで考えてみる。
長いエクササイズ(p.228)
コード(Xcode)
main.swift
//
// main.swift
// sample228
//
// Created by kamimura on 8/26/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
println("構造体バージョン")
var fish:Fish = Fish(
name: "スナッピー",
species: "ピラニア",
teeth: 69,
age: 4,
care: Preferences(
food: Meal(
ingredients: "肉",
weight: 0.1),
exercise: Exercise(
description: "ジャグジーでの泳ぎ",
duration: 7.5)))
println(fish.catalog)
println(fish.care.label)
println("クラスバージョン")
var fish1:Fish1 = Fish1(name:"スナッピー", species:"ピラニア", teeth:69, age:4, ingredients:"肉", weight:0.1,
description:"ジャグジーでの泳ぎ", duration:7.5)
println(fish1.catalog)
println(fish1.label)
struct.swift
//
// struct.swift
// sample228
//
// Created by kamimura on 8/26/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
struct Exercise {
let description:String;
var duration:Double;
}
struct Meal {
let ingredients:String
var weight:Double;
}
struct Preferences {
var food:Meal
var exercise:Exercise;
var label:String { return "餌は\(self.food.weight)キロの\(self.food.ingredients)を与え、" +
"\(self.exercise.description)を\(self.exercise.duration)時間行わせます。" }
}
struct Fish {
let name:String;
let species:String;
var teeth:Int;
var age:Int
var care:Preferences;
var catalog:String { return "\(self.name)は\(self.species)であり、歯は\(self.teeth)本あります。年齢は\(self.age)才です。" }
}
Pythonの時みたいにclassを使った場合。(Swiftは、Pythonのような多重継承は出来ないみたい。)
class.swift
//
// class.swift
// sample228
//
// Created by kamimura on 8/26/14.
// Copyright (c) 2014 kamimura. All rights reserved.
//
import Foundation
class Exercise1 {
let description:String
var duration:Double
init (description:String, duration:Double) {
self.description = description
self.duration = duration
}
}
class Meal1 {
let ingredients:String
var weight:Double
init(ingredients:String, weight:Double) {
self.ingredients = ingredients
self.weight = weight
}
}
class Preferences1 {
var food:Meal1
var exercise:Exercise1
init(ingredients:String, weight:Double, description:String, duration:Double) {
self.food = Meal1(ingredients: ingredients, weight: weight)
self.exercise = Exercise1(description: description, duration: duration)
}
var label:String { return "餌は\(self.food.weight)キロの\(self.food.ingredients)を与え、" +
"\(self.exercise.description)を\(self.exercise.duration)時間行わせます。" }
}
class Fish1: Preferences1 {
let name:String
let species:String
var teeth:Int
var age:Int
init(name:String, species:String, teeth:Int, age:Int, ingredients:String, weight:Double, description:String,
duration:Double) {
self.name = name
self.species = species
self.teeth = teeth
self.age = age
super.init(ingredients:ingredients, weight:weight, description:description, duration:duration)
}
var catalog:String { return "\(self.name)は\(self.species)であり、歯は\(self.teeth)本あります。年齢は\(self.age)才です。" }
}
入出力結果(Console Output, Terminal)
構造体バージョン スナッピーはピラニアであり、歯は69本あります。年齢は4才です。 餌は0.1キロの肉を与え、ジャグジーでの泳ぎを7.5時間行わせます。 クラスバージョン スナッピーはピラニアであり、歯は69本あります。年齢は4才です。 餌は0.1キロの肉を与え、ジャグジーでの泳ぎを7.5時間行わせます。 Program ended with exit code: 0
0 コメント:
コメントを投稿