2014年9月11日木曜日

開発環境

Practical Programming: An Introduction to Computer Science Using Python 3 (Pragmatic Programmers) (Paul Gries (著)、Jennifer Campbell (著)、Jason Montojo (著)、Lynn Beighley (編集)、Pragmatic Bookshelf)のChapter 9(Repeating Code Using Loops)、9.10(Exercises) 9.をSwiftで考えてみる。

9.10(Exercises) 9.

コード(Xcode)

main.swift

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

import Foundation

let a = 33...49
let b = 33..<50
for n:Int in a {
    println(n)
}

for n:Int in b {
    println(n)
}

let c = a.map({(n:Int) in "\(n)"})
let d = b.map({(n:Int) in String(n)})

println("\n".join(c))
println("\n".join(d))

c.forEach(println)
d.forEach(println)

array.swift

//
//  array.swift
//  array
//
//  Created by kamimura on 8/21/14.
//  Copyright (c) 2014 kamimura. All rights reserved.
//

import Foundation

extension Array {
    func indexAt(i:Int) -> T {
        if i >= 0 {
            return self[i]
        }
        let new_index:Int = self.count + i
        return self[new_index]
    }
    func slice(start:Int = 0, end:Int? = nil) -> Array {
        var new_start = start >= 0 ? start : self.count + start
        var new_end:Int
        if end == nil {
            new_end = self.count
        } else if end! >= 0 {
            new_end = end!
        } else {
            new_end = self.count + end!
        }
        var result:Array = []
        if new_start >= new_end {
            return []
        }
        for i in new_start..<new_end {
            result.append(self[i])
        }
        return result
    }
    func forEach(f:(T) -> ()) {
        for e in self {
            f(e)
        }
    }
}

func sum(nums:[Int]) -> Int {
    return nums.reduce(0, combine: {(x, y) in x + y})
}

入出力結果(Console Output)

33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
Program ended with exit code: 0

0 コメント:

コメントを投稿