Chapter 3
Published by CodePat
- Swift : 객체 지향적 성격을 지닌 스크립트 스타일의 언어
- 객체 지향 프로그래밍 : 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법.
3.1 Swift의 기초 문법
- Swift는 대소문자를 구분한다.
- 함수와 메소드, 인스턴스명의 첫 글자는 소문자로 (관례상)
- 클래스와 구조체, 프로토콜 등 객체의 첫 글자는 대문자로
- 주석 처리
- 한줄 주석 : // code
- 여러줄 주석 : / code /
3.2 변수와 상수
-
변수 :
var + 변수명
로 지정
- 필요에 따라 저장된 값을 몇 번이라도 다른 값으로 변경할 수 있다 -> 프로그램의 실행에 따라 변하는 값을 저장.
- 최초 지정된 타입과 일치하는 타입일 경우에 다른 값으로 변경 가능.
예) 최초에 var year: Int
로 변수 선언을 했으면, 후에 year 값은 int 타입일 경우에만 다른 값으로 변경이 가능하다.
-
상수 :
let + 상수명
으로 지정
- 한 번 저장된 값을 다른 값으로 변경할 수 없다 -> 변하지 않을 값을 지정
- 굳이 필요에 따라 상수를 사용하는 이유 : 프로그래밍 소스 관리 목적상 변하지 않는 값은 상수에 저장하는 것이 효율적이고 실수로 값이 변경되는 일도 막을 수 있고, 값의 성격이 명확히 분류되어 관리하기도 쉽다.
3.3 자료형
- Int : 부호(-, +)가 있는 정수값을 저장하는데 사용되는 자료형.
- UInt : 부호가 없는 정수 -> 정수를 저장하지만 양수만 저장할 수 있다(자연수).
- Int를 쓰면 되지 왜 UInt까지 필요한가?? -> Int 와 UInt 모두 저장할 수 있는 값의 개수가 정해져 있고, Int는 음수의 영역까지 포함하기 때문에 양수의 값만 따져봤을 때, UInt가 Int다 저장할 수 있는 값의 영역이 2배라고 볼 수 있다.
예) Int8과 UInt8을 비교했을 때, Int8의 저장 값 범위는 -128 ~ 127 이고 UInt8의 저장 값 범위는 0 ~ 255 이다.
- Double & Float : 둘 다 실수값을 저장할 수 있는 자료형이지만, Double 타입은 64bit 부동소수점 자료형이고 Float 타입은 32bit 부동소수점 자료형이기에 Double은 소수점 아래 15 ~ 16자리까지 Float은 소수점 아래 7 ~ 8자리까지의 값을 저장할 수 있다.
- Bool : 참 / 거짓, On / Off 등 두가지의 조건에 대해 옳다, 그르다를 표현해주는 두 가지 종류의 값만 가질 수 있는 자료형이다. 주로 논리값을 저장하기 위해 사용된다.
- String : 문자열을 저장하기 위해 사용되는 자료형이다.
- string 타입 데이터 값을 표현할 때 큰따옴표를 사용한다.
예) var projectName = "ios Study"
- Character : string과 비슷하게 문자열을 저장할 때 사용되지만, string 타입은 여러 글자로 이루어진 문자열을 저장할 수 있지만, character 타입은 한 개의 문자를 저장할 수 있는 단일 자료형이다.
- character 타입 데이터 값을 표현할 때에도 큰따옴표를 사용한다.
예) var firstLetter : Character = "s"
3.3.2 타입 추론과 타입 어노테이션
- 선언 방식 :
var day = 7 // 선언과 초기화를 동시에
var year : Int // 선언
year = 1999 // 초기화
var name : String = "홍길동" // 타입을 명시한 선언
3.3.3 타입이 다른 변수끼리의 결합
var stmt = "꼼꼼한 재은씨의 키는"
var height = 185
var heightStmt = stmt + String(height)
-> "꼼꼼한 재은씨의 키는 185"
- Int 타입으로 선언이 된 height를 String 타입으로 바꾼것이 아닌 새로운 문자열 인스턴스를 임시적으로 만드는 것.
- 문자열 템플릿
let name = "꼼꼼한 재은씨"
let year = 2014
let month = 10
let day = 1
let profile = "\(name)는 \(year)년 \(month)월 \ (day)일에 출간되었습니다."
-> 꼼꼼한 재은씨는 2014년 10월 1일에 출간되었습니다.
3.4 연산자
let a = 10
let b = 2
a + b // 12
a - b // 8
a * b // 20
a / b // 5
a % b // 0
연산자 양쪽의 공백을 일치시켜주지 않을 경우 오류가 발생할 수 있다.
a < b // false
a > b // true
a <= b // false
a >= b // true
a == b // false
a != b // true
* 논리 연산자
true && true // true
false && false // false
true && false // false
false && true // false
true || true // true
false || false // false
true || flase // true
false || true // true
* Quiz
let a = 10
let b = 5
let c =2
a == b && a > b
a - b > b - c && b == 0
* 범위 연산자
// 닫힘 범위 연산자
1 ... 5 // 1, 2, 3, 4, 5
// 반 닫힘 범위 연산자
1 ..< 5 // 1, 2, 3, 4
* 대입 연산자
a = 1 // a에 1을 대입
a += 1 // a = a + 1
a -= 3 // a = a - 3
a *= 1 // a = a * 1
a /= 3 // a = a / 3
a %= 1 // a = a % 1
a <<= 3 // a = a << 3
a >>= 1 // a = a >> 3
a &= 3 // a = a & b
a ^= 1 // a = a^b
a |= b // a = a | b
출처:
- 이재은, 『꼼꼼한 재은 씨의 Swift: 문법편』, 루비페이퍼(2020), p117-178.