STUDY/Swift & iOS

Swift 문법 기초 1

sinawi95 2022. 6. 7. 21:23
728x90

https://yagom.net/courses/swift-basic/

기초 개념

Naming Rule (이름짓기 규칙)

lowerCamelCase

  • Function
  • method
  • variable
  • constant

UpperCamelCase

  • Type(class, struct, enum, extension)

콘솔로그

  • print: 단순 문자열 출력
  • dump: 인스턴스의 자세한 설명(description)까지 출력

String Interpolation (문자열 보간법)

  • \() : 프로그램 실행 중 문자열 내 변수 또는 상수의 실질적인 값을 표현하기 위해 사용
  • ex) print(“Hello \(name)!”)

상수와 변수

let: 상수 선언. 변경 불가능

  • let name: String = “dg”
  • let name = “dg”
  • let name: String - 명시하면 추후에 한번 선언가능

var: 변수 선언. 변경 가능

  • var age: Int = 28
  • var age = 28

 

기본데이터 타입

Bool: true, false

  • 0, 1로 표현하면 에러

Int, UInt: 64bit 정수형 타입

  • 실수 타입을 넣으면 에러
  • UInt에 음수를 넣으면 에러

Float: 32bit 부동소수형 실수

Double: 64bit 부동소수형 실수

Character: 문자타입, 유니코드 사용, 큰따옴표 사용

  • 문자열 입력시 에러

String: 문자열 타입, 유니코드 사용, 큰따옴표 사용

  • 여러 문자열은 큰따옴표 세개사용
  • “””이 들어가는 줄은 줄바꿈 필요함

 

Any, AnyObject, nill

Any: Swift의 모든 타입을 지칭하는 키워드

  • 다른 타입으로 할당하려면 명시적인 변환 필요

AnyObject: 모든 클래스 타입을 지칭하는 프로토콜

  • 클래스의 인스턴스가 아니면 에러

nil: 없음을 의미하는 키워드

  • Any, AnyObject에 nil을 할당할수 없음

 

컬렉션 타입

Array: 리스트 컬렉션

  • 선언, 생성은 여러 표현방법이 있음
    • var integers: Array<Int> = Array<Int>()
    • Array<int>를 [Int]로 바꿔서 사용할수 있음
      • var integers: [Int] = Int
    • var Integers:[Int] = []
    • var integers = Int
  • method
    • append
    • contains → Bool
    • remove(at: i), removeLast, removeAll
    • count
  • let을 사용해서 선언하면 불변 array가 됨

Dictionary: 키, 값 쌍으로 이루어진 컬렉션

  • 선언시 키, 값의 데이터 타입을 명시해야함
    • var anyDict: Dictionary <String, Any> = Dictionary<String, Any>()
    • 이외에도 여러 표현 방법이 있음
  • method
    • removeValue
  • 마찬가지로 let을 사용하면 불변 딕셔너리가 됨
  • 키에 해당하는 값을 다른 변수나 상수에 할당하고자 할때 컴파일 오류가 발생할수 있음 → 옵셔널, 타입 캐스팅 필요

Set: 순서는 없지만 중복되는 값이 없는 컬렉션

  • 선언
    • var integerSet: Set<int> = Set<Int>()
  • method
    • insert
    • contains → Bool
    • remove, removeFirst
    • count
  • 집합연산 사용 가능
    • setA.union(setB)
    • setA.intersection(setB)
    • setA.subtracting(setB)

함수

함수의 기본 형태

func name(param1: type1, param2: type2) → returnType {
	//expression
	return returnValue
}
  • parameter가 없는경우 Void 명시 안함. func ex1() → Int { return 1 }
  • Return value가 없는 경우 return type에 Void 명시하지 않아도됨. func ex2() { print("example 2") }

함수 호출

func sum(a: Int, b: Int) -> Int {
	return a + b
}
sum(a:3, b:5)

매개변수 기본값 (default parameter)

  • 기본값을 갖는 매개변수는 뒤쪽에 위치하는 것이 좋음
func ex3(friend: String, greeting: String = "Hello") {
	print("\(greeting), \(friend)!") 
} 

ex3(friend: "world") // Hello, world!

 

전달인자 레이블

  • 함수를 호출할때 사용자의 입장에서 매개변수의 역할을 좀더 명확하게 표현하고자 할때 사용
    • 내부에서는 매개변수 이름(friend, me)으로 사용하고, 외부에서는 전달 인자 레이블(to, from)로 사용함
    • parameter 랑 argument의 차이인듯
func 함수이름(전달인자레이블 매개변수1이름: 매개변수1타입, 전달인자레이블 매개변수2이름: 매개변수2타입 ...) -> 반환타입 {
    /* 함수 구현부 */ 
    return 
} 
// 함수 내부에서 전달인자를 사용할 때에는 매개변수 이름을 사용합니다 
func greeting(to friend: String, from me: String) { 
	print("Hello \\(friend)! I'm \\(me)") 
} 
// 함수를 호출할 때에는 전달인자 레이블을 사용해야 합니다 
greeting(to: "world", from: "dg") // Hello world! I'm dg

가변 매개변수

func 함수이름(매개변수1이름: 매개변수1타입, 전달인자 레이블 매개변수2이름: 매개변수2타입...) -> 반환타입 {
    /* 함수 구현부 */
    return
}

func sayHelloFriends(me: String, friends: String...) -> String {
    return "Hello \(friends)! I'm \(me)!"
}
print(sayHelloToFriends(me: "dg", friends: "world", "war", "waldo"))
// Hello ["world", "war", "waldo"]! I'm dg!

print(sayHelloToFriends(me: "dg"))
// Hello []! I'm dg!

 

데이터 타입으로서의 함수

  • 함수형 프로그래밍 패러다임
  • 스위프트의 함수는 일급객체
    • 함수를 변수, 상수 등에 할당이 가능
    • 매개변수를 통해 전달할 수도 있습니다

'STUDY > Swift & iOS' 카테고리의 다른 글

Swift 문법 기초 6  (0) 2022.06.25
Swift 문법 기초 5  (0) 2022.06.21
Swift 문법 기초 4  (0) 2022.06.20
Swift 문법 기초 3  (0) 2022.06.13
Swift 문법 기초 2  (0) 2022.06.09