IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

swiftを使ってみた

某Wimax2の制限なしの2年縛りが近づいてきているので、諸々の大きめなファイルのダウンロードをしていました。xcodeもこの機会にダウンロードしました。せっかくなのでswiftを使ってみました。

起動する。

f:id:naotoogawa:20160130140120p:plain

ガチで開発しない場合はPlaygroundを使うようです。

f:id:naotoogawa:20160130140131p:plain

エディタの全体構造はこのようになっています。中央がコードエディタで、下が実行結果。

f:id:naotoogawa:20160130140248p:plain

コードを書くと勝手に実行されるようです。左側にリアルタイムで処理結果が出ています。

f:id:naotoogawa:20160130140331p:plain

スクリプト言語っぽいのに型が厳しいなぁという印象です。

//: Playground - noun: a place where people can play

import UIKit

// var str = "Hello, playground  111"

var x = "abc"
print(x)
var b = 123
print(b)

//print(a + b) NG
//
//Playground execution failed: /var/folders/hw/p4bp49hd7v9_1j60sjvmhqnr0000gn/T/./lldb/1500/playground162.swift:12:7: error: use of unresolved identifier 'a'
//print(a + b)
//^
print(x + String(b))


print("array ---")
var arr = [0,1,2,3,4,5,6,7,8,9]

var a0 = arr.first
print(a0!.value)


print("loop ---")

// loop
arr[3]
for a in arr {
    print(a)
}

print("filter ---")
//filter
var arr1 = arr.filter{$0 % 2 == 0}
for a in arr1 {
    print(a)
}

print("filter ---")
//filter
for a in (arr.filter{$0 % 2 == 0}) {
    print(a)
}

//// compile error
//for a in arr.filter{$0 % 2 == 0} {
//    print(a)
//}
print("dictionary ---")
// var dic = [A : 10, B :20, C:30, D:40 ] // NG
var dic = ["A" : 10, "B" :20, "C":30, "D":40 ] // OK
print(dic["A"]) // optional value
print(dic["A"]!) // unwrap

print("dictionary loop ---")
for a in dic {
    print(a.0)
    print(a.1)
}

print("dictionary sort ---")
for a in (dic.sort{$0.1 < $1.1}) {
    print(a.0)
    print(a.1)
}

// https://developer.apple.com/library/ios/documentation/General/Reference/SwiftStandardLibraryReference/index.html
// https://developer.apple.com/library/ios/documentation/Swift/Reference/Swift_StandardLibrary_Functions/index.html

//var dic1 = [ ["name" : "AA" , "val" : 10] , ["name" : "BB", "val" : 20]]
//for a in dic1 {
//    print(a.)
//}

// a:10, b:20 , c:30, d:40

var g = ["a":10, "c":30 , "b":20 , "d":40]
for (key, val) in g {
    print("key=\(key) : val=\(val)")
}

var g1 = [["a":10], ["c":30] , ["b":20] , ["d":40]]
for val in g1 {
    print("data=\(val)")
}

var g2 : Array<Array<NSObject>> = [["a",10], ["c",30] , ["b",20] , ["d",40]]

func check(x : Array<Array<NSObject>>) -> (){
    var maxVal = 0;
    for var val in x {
        if (maxVal > val[1] as! Int) {
            val[1] = -1
        } else {
            maxVal = val[1] as! Int
        }
        print("data=\(val[1])")
    }
}
print("function ---")
check(g2)