본문 바로가기
  • SDXL 1.0 + 한복 LoRA
  • SDXL 1.0 + 한복 LoRA
Study/Swift

아두이노와 함께 하기 위한 간단한 Swift 지식들

by 마즈다 2016. 6. 21.
반응형


아두이노와 함께 하기 위한 간단한 Swift 지식들


이 글은 전문적으로 Swift를 학습하기 위한 것이 아니라 아두이노 개발과 관련하여 아이폰쪽 소스를
조금 더 잘 이해하고자 하는 목적입니다.


관련 소스 : https://github.com/mazdah/BluetoothController


1. 변수와 상수


let : 상수를 만들 때 사용하며 최초 한번 값을 할당하면 이후 값을 변경할 수 없음
var : 변수를 만들 때 사용


타입 지정은 필수가 아님
할당된 값은 암시적인 타입변환을 할 수 없음. 초기 값과 다른 타입으로 사용하기를 원한다면 
반드시 명시적으로 형 변환을 해주어야 함


문자열 안에 변수를(변수의 값을) 표현하고자 하면 다음과 같이 표현한다.
“문자열 안에 값을 쓰려면 \(변수명) 이렇게 쓴다”


배열과 딕셔너리는 []를 이용하여 만든다.


var sampleArray = [“a”, “b”, “c”, “d”, “e”]
var sampleDictionary = [
    “first”:”a”, 
    “second”:”b”, 
    “third”:”c”, 
    “fourth”:”d”, 
    “fifth”:”e”
]


빈 배열과 딕셔너리는 initializer를 사용한다.


let blankArray = String[]()
let blankDictionary = Dictionary<String, Float>()


타입을 명시적으로 사용할 수 없을 경우 다음과 같이 표기할 수 있다.


let blankArray =[]
let blankDictionary = [:]


2. 조건문


if의 조건문은 ()로 감싸지 않아도 된다. 하지만 코드를 감싸는 중괄호({})는 필수다.


if value == 1 {
    print("value = 1")
}


3. Optional


어떠한 변수나 상수에 값이 존재하는지 여부를 표현함
표현 방식은 다음과 같다.


var optionalInt: Int? = 100
var optionalString: String? = “this is optional String”
// 값을 초기화 하지 않으면 자동적으로 nil로 초기화 됨
var nilIn: Int?
var nilString: String?


어떤 optional이 값을 가지고 있으면 true, 값을 가지고 있지 않으면 false이다.


var optionalInt: Int? = 100

// 아래의 경우는 true가 출력된다.
if optionalInt {
	print("true")
} else {
	print("false")
}

var nilInt: Int?

 // 아래의 경우는 false가 출력된다.
 if nilInt {
	print("true")
 } else {
	print("false")
 }

nil은 optional이 아닌 상수나 변수와 사용할 수 없다.

Objective-c에서의 nil은 존재하지 않는 Object에 대한 포인터였다면 Swift에서의 nil은 포인터가 아닌 명확하게 값이 없다는 것에 대한 표현일 뿐이다. 때문에 어떤 타입에 대해서도 nil을 지정할 수 있다.


Optional binding


if문에서 다음과 같이 optional binding을 사용할 수 있다.


var optionalString = "123"

if let constantValue = optionalString.toInt() {
    println("\(optionalString) has an integer value of \(constantValue)")
} else {
    println("\(possibleNumber) could not be converted to an integer")
} 


이 if문의 의미는 optionalString.toInt()가 리턴한 옵셔널 int가 값을 가지고 있을 경우 그 값을
constantValue에 할당하고 이후 constantValue는 ! 기호를 붙이지 않고 사용 가능하다.
optional binding은 변수와 상수에 모두 사용 가능하다.


Implicitly Unwrapped Optionals


만일 프로그램상에서 구조적으로 값이 있다는 것이 명확한 optional의 경우 ?가 아닌 !를 붙여
Implicitly Unwrapped Optional을 만들 수 있다.


//Optional
let possibleString: String? = "An optional string." 
// Implicitly Unwrapped Optional
let assumedString: String! = "An implicitly unwrapped optional string."


Implicitly Unwrapped Optional은 사용 시에도 Optional이 아닌 것처럼 사용할 수 있다.


//Optional의 사용
println(possibleString!)
// Implicitly Unwrapped Optional의 사용
println(assumedString)


Implicitly Unwrapped Optional도 Optional과 동일하게 if문을 통해 값을 가졌는지 체크하거나
optional binding 사용이 가능하다.


if assumedString {
    println(assumedString)
}

if let tempString = assumedString {
    print(tempString)
}


Optional 요약

  • 값이 없는 경우를 만들기 위해서는(nil을 할당하기 위해서는) Optional로 선언해야 한다.
  • Optional로 선언하게 되면 값이 Wrapping된다.
  • Optional 값을 사용하기 위해서는 Unwrapping 해야하는데 그 방법은 Optional 뒤에 !를 붙이는 것이다.
  • if문을 통해 optional binding을 이용하면 !를 붙이지 않고 다른 변수/상수에 값을 할당하여 그 변수/상수를 이용할 수 있다.
  • 최초 할당 이후 nil 값이 아닌 것이 확실한 경우 선언할 때부터 !를 붙이는 Implicitly Unwrapped Optional를 사용하며 이후 Optional이 아닌 것처럼 사용 가능하다.


반응형

'Study > Swift' 카테고리의 다른 글

아두이노와 함께 하기 위한 간단한 Swift 지식들 ~ 2  (0) 2016.06.27