루아 스크립트(Lua)도 단숨에 배워보세요 ::
https://blog.wonhada.com/?p=331

Go 언어(Golang)도 단숨에 배워보세요 ::
https://blog.wonhada.com/?p=1930

기존 개발자를 위한 정리입니다. 개인적으로 액션스크립트와 많이 유사해서 좋네요. 🙂

1. 끝에 세미콜론(;) 없는게 관행 (있어도 무관)
2. 대소문자 구분함
3. 주석
한 줄 ::
//
여러 줄 ::
/* */

4. 변수 정의

1
2
3
4
5
6
7
8
9
// 변수
var str:String = "Hello World"

// 상수 :: (Int는 Int64와 동일)
let age:Int = 21

//nil(빈값)으로 초기화 (Optionals)
var opt:Int // 초기화 안됨 (Error!!)
var opt:Int? // nil로 초기화

5. 조건문 (&&, || 사용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
if (age < 20) {
} else if (age == 20) {
} else {
}

switch (age)
{
    case 15...20: // 15 ~ 20
        break;
    case 21:
        break;
    default: // 반드시 필요
}

var result:String = ((age < 20) ? "A" : "B")
print("result=\(result)") // result=B

6. 반복문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
for (var i:Int = 0; i < 10; ++i) { // 이건 스위프트 3.0에서 없어질 예정
    print(i) // 0 ~ 9
}

// for var i:Int in 0..<10 {
// for i in 0...9 {
for i in 0..<10 {
    print(i) // 0 ~ 9
}

var i:Int = 0
while (i < 10) {
    print(i) // 0 ~ 9
    ++i
}

i = 0
repeat {
    print(i) // 0 ~ 9
    ++i
}
while (i < 10)

var arr:Array = ["AAA", "BBB", "CCC"]
for var prop:String in arr {
     // for prop in arr 가능
    print(prop) // AAA, BBB, CCC
}

var arr2:Dictionary = [
    "a" : "AAA",
    "b" : "BBB",
    "c" : "CCC"
]
for (k, v) in arr2 {
    print(k, v) // b BBB, a AAA, c CCC
}

7. 함수 (함수 정의 후 호출을 권장, 파라미터 초기화 가능)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// 반환값이 1개일 경우
func call(value:Int=333) -> String {
    print(value) // 111, 333
    return "OK"
}
print(call(111)) // OK
print(call()) // OK

// 반환값이 2개 이상일 경우
func get() -> (result1:String, result2:Int) {
    return ("AAA", 111) // 튜플로 반환
}
var tup = get()
print(tup.result1, tup.result2) // AAA 111

8. 배열

1
2
3
4
5
6
7
8
9
10
// var arr:[String]
var arr:Array = ["AAA", "BBB", "CCC"]
print(arr[0]) // AAA
print(arr.count) // 3
print(arr.removeLast()) // CCC
print(arr) // ["AAA", "BBB"]
print(arr.removeAtIndex(1)) // BBB
arr.append("DDD") // arr += ["DDD"] 가능
arr.insert("EEE", atIndex:1)
print(arr) // ["AAA", "EEE", "DDD"]

9. 딕셔너리

1
2
3
4
5
6
7
8
var emptyDic:Dictionary = [String:Int]()
var dic = ["a":1, "b":2, "c":3]
print(dic.count) // 3
dic["c"] = nil
print(dic.count) // 2
dic["b"] = 4
dic.updateValue(5, forKey: "a")
print(dic) // ["a":5, "b":4]

10. 세트

1
2
3
4
5
6
7
8
var s:Set<String> = []
var s2:Set = ["AAA", "BBB"] // 동일한 타입만 가능
print(s2.count) // 2
s2.insert("CCC")
s2.remove("AAA")
print(s2) // ["BBB", "CCC"]
s2.removeAll()
print(s2.count) // 0

11. 튜플

1
2
3
4
5
6
7
8
9
10
var tup = (blog:"WonHada.com", from:2015)
print(tup.0) // WonHada.com
tup.0 = "Kangmin Won"
print(tup.blog) // Kangmin Won
print(tup.from) // 2015

// 튜플은 Value Type
var tupCopy = tup
tup.0 = "Changed"
print(tupCopy.0) //"Kangmin Won"

12. 열거형

1
2
3
4
5
6
7
8
9
enum State {
    case PLAYING
    case PAUSED
    case STOPPED
}
var s1 = State.PLAYING
var s2:State = .STOPPED
if (s2 == State.PAUSED) {
}

13. 클로져

1
2
3
4
5
6
7
8
9
10
// 함수
func sumFunc(a:Int, b:Int) -> Int {
    return a + b
}

// 클로져 (함수의 'func sumFunc' 빼고, in 추가)
var sumClosure = {(a, b) -> Int in return a + b}

print(sumFunc(1, b:2)) // 3
print(sumClosure(1, 2)) // 3

14. Getter / Setter

1
2
3
4
5
6
7
8
9
10
11
12
13
var _v:Int = 0
var value:Int {
    get {
        return _v
    }
    set {
        _v = newValue
        print("_v=\(_v)") //_v=10
    }
}

print(value) // 0
value = 10

15. 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class Person {
    // 프로퍼티
    class var mom:String {
        get {
            return "Mommy"
        }
    }
    var name:String
    var age:Int

    // 생성자 (초기화)
    init() {
        self.name = "none"
        self.age = 0
    }

    // 생성자 오버로딩
    init(name:String, age:Int) {
        self.name = name
        self.age = age
    }

    // 메소드
    func sing() -> Void {
        print("Let it go~")
    }
}

print(Person.mom)
var p1 = Person(name:"Elsa", age:21)
p1.sing()

// 상속
class Anna : Person {
    override func sing() {
        print("Love is an open door~")
    }
}

var anna = Anna(name: "Anna", age: 18)
anna.sing()

루아 스크립트(Lua)도 단숨에 배워보세요 ::
https://blog.wonhada.com/?p=331

Go 언어(Golang)도 단숨에 배워보세요 ::
https://blog.wonhada.com/?p=1930