開発環境
- 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 コメント:
コメントを投稿