開発環境
- OS X Mavericks - Apple(OS)
- Xcode 6.0 Beta 6
- Swift (プログラミング言語)
Head First C ―頭とからだで覚えるCの基本(David Griffiths (著)、Dawn Griffiths (著) 中田 秀基(監訳)(翻訳)、木下 哲也 (翻訳)、オライリージャパン)の7章(高度な関数: 関数を最大限に活用する)、長いエクササイズ(p.328)をSwiftで考えてみる。
長いエクササイズ(p.328)
コード(Xcode)
main.swift
// // main.swift // sample328 // // Created by kamimura on 9/8/14. // Copyright (c) 2014 kamimura. All rights reserved. // import Foundation struct Rectangle : Printable { let width:Int let height:Int var area:Int { return width * height } var description: String { return "\(width)x\(height)" } } func compareScores(a:Int, b:Int) -> Bool { return a < b; } func compareAreas(a:Rectangle, b:Rectangle) -> Bool { return a.area < b.area } func compareNames(a:String, b:String) -> Bool { return a < b } func compareAreasDesc(a:Rectangle, b:Rectangle) -> Bool { return compareAreas(b, a) } func compareNamesDesc(a:String, b:String) -> Bool { return compareNames(b, a) } var nums:[Int] = [5, 1, 4, 2, 3] var rs:[Rectangle] = [Rectangle(width: 1, height: 5), Rectangle(width: 1, height: 1), Rectangle(width: 1, height: 4), Rectangle(width: 1, height: 2), Rectangle(width: 1, height: 3)] var strs:[String] = ["Abc", "Def"] println("sorted") println(nums.sorted({(a:Int, b:Int) in a < b})) println(nums) println(nums.sorted({(a:Int, b:Int) in a > b})) println(nums) println(rs.sorted(compareAreas)) println(rs) println(rs.sorted(compareAreasDesc)) println(rs) println(strs.sorted(compareNames)) println(strs) println(strs.sorted(compareNamesDesc)) println(strs) println("sort") nums.sort({(a:Int, b:Int) in a < b}) println(nums) nums.sort({(a:Int, b:Int) in a > b}) println(nums) rs.sort(compareAreas) println(rs) rs.sort(compareAreasDesc) println(rs) strs.sort(compareNames) println(strs) strs.sort(compareNamesDesc) println(strs)
入出力結果(Console Output, Terminal)
sorted [1, 2, 3, 4, 5] [5, 1, 4, 2, 3] [5, 4, 3, 2, 1] [5, 1, 4, 2, 3] [1x1, 1x2, 1x3, 1x4, 1x5] [1x5, 1x1, 1x4, 1x2, 1x3] [1x5, 1x4, 1x3, 1x2, 1x1] [1x5, 1x1, 1x4, 1x2, 1x3] [Abc, Def] [Abc, Def] [Def, Abc] [Abc, Def] sort [1, 2, 3, 4, 5] [5, 4, 3, 2, 1] [1x1, 1x2, 1x3, 1x4, 1x5] [1x5, 1x4, 1x3, 1x2, 1x1] [Abc, Def] [Def, Abc] Program ended with exit code: 0
0 コメント:
コメントを投稿