iOS/Allen Swift School

Part.1 변수와 상수 | Swift School

sngsp 2024. 1. 29. 12:44

0) 기본 출력 방법 (print)

var a = 5

print(a) // 5 출력
print(7) // 7 출력
print(a + 3) // 8 출력

print("a") // a 출력
print("a와 /(a)의 출력은 다릅니다") // a와 5의 출력은 다릅니다 출력

print() or print(\n) // 줄바꿈 출력

1) 변수(Variables) : 변할 수 있는 데이터

  • 변수의 선언 규칙
  1. 이름은 소문자로 시작

    var Username // 틀린 방법
    var userName // 맞는 방법
  2. 변수는 선언 시 값 대입 or 값 변경 가능

    //선언할 때 값을 대입
    var a = 5
    //나중에 값을 변경
    var a: Int //Int, Double, String 등 형태는 반드시 지정되어야 한다.
    // 그리고 형태의 선언같은 경우는 반드시 대문자로 시작한다. (int 틀림)
  3. 대입 연산자 '='은 같다가 아니라 대입이다.

    var a = 5 //a라는 변수에 5를 대입한다.
  4. 변수에 새로운 값을 대입하면 이전 값은 덮어쓰여진다

    var a = 5
    a = 3 //a에 저장되어있던 5가 사라지고 3으로 변함.
  5. 변수는 한 줄에 여러 개를 선언 후 콤마 연결이 가능하다

    var x = 1, y = 2, z = 3 //동시 선언

2) 상수(Constants) : 변하지 않는 데이터

  1. 상수의 선언

    let name = "김철수" // (O)
    let age = 20 // (O)
    let name = "김영희" //(X) -> 선언된 내용은 변경 불가
    let age = 30 // (X) -> 선언된 내용은 변경 불가
    let newName = "홍길동" // (O) -> 다른 상수엔 선언 가능
  2. Swift의 데이터 타입

  • 변수 선언의 정식 문법

    var number: Int = 3
    var char: String = "김철수"
    // : Int, : String 생략 가능.
    // 생략 시, 자동으로 타입 추론을 해주는데 확인이 필요할 경우
    // 옵션 키 + 클릭
  • Swift의 주요 데이터 타입

반드시 맨 앞 글자는 대문자!

  • Int : 정수 Integer 타입 ex) -1, 0, 1, 2, 3, 4…`
  • Float : 실수(부동소수점) Floating Point Number (최대 6자리 소수점) 3.141592
  • Double : 실수(부동소수점) (최대 15자리 소수점) 3.1415926548…
  • Character : 문자 (글자 단 한 개) ex) a, b, c, A, B, C, 일, 이, 삼, “ “(공백)
  • String : 문자열 ex) hello, swift, iPhone
  • Bool : 참과 거짓 (참 = 1, 거짓 = 0)

3) 타입 주석/타입 추론/타입 안정성/타입 변환

  1. 타입 확인법
  • var a = blahblah type(of: a) //실행 결과 Character.Type //출력이 되는 건 아님`
  1. 타입 주석(Type Annotation)
  • // 자료형을 명확하게 지정하고 값을 부여하지 않은 채 선언 // Int로 선언하고 나중에 Double, String 등 다른 Type의 값을 담을 수는 없음 // 1단계) 변수 선언 var num: Int var str: String // 2단계) 값 저장 num = 5 str = "hello" // 3단계) 값 읽기 print(num) // 5 출력 print(str) // hello 출력`
  1. 타입 추론(Type Inference) : 타입을 지정하지 않아도 컴파일러가 타입을 유추하는 방식
    var num = 1 // num이라는 변수에 Int형이 담겨있다고 타입 추론이 이루어진 상태
    var str = "hello" // str이라는 변수에 String형이 담겨있다고 타입 추론이 이루어진 상태
    var a = 3.14 // a라는 변수에 Double형이 담겨있다고 타입 추론이 이루어진 상태
    // float형으로 표현이 가능하지만 타입 추론에서는 Double로 먼저 추론함
  2. 타입 안정성(Type Safety)
    : 다른 타입끼리의 계산이 불가능함.
    var a: Int = 3
    var b: Double = 3.14
    var sum = a + b //데이터 타입(형태)이 달라서 계산이 안됨. 6.14가 안나옴.
  3. 타입(형) 변환(Type Conversion)
  • // 1) 자체 형 변환 let str = "123" //Int 123이 아니라 String 123임 Int(str) //타입 변환 // 2) 형이 변환된 새로운 변수 생성 let str2 = "123" let strToNum = Int(str2) //새 변수에 형 변환된 str2 값 저장 print(strToNum) //Int형으로 변환된 123 출력 // Optinal(123)\n 출력`
  1. 형변환 예외 케이스

    // String to Int (변형안되는 경우에만)
    let str = "안녕하세요"
    let num = Int(str) // nil이 리턴됨.
    // Double to Int let str = "3.14"
    // String let num = Int(str)
    // nil이 리턴됨. 잘못된 형 변환의 경우임.
    //IntDouble로는 변형 가능함 2 -> 2.0`
  2. 타입 엘리아스 : 별칭 붙이기

    //Type Alias 응용
    typealias Name = String
    let str: Name = "홍길동"
    //해당 사용은 아래와 같은 형태를 가짐
    let str2: String = "홍길동"
    typealias Name = String // 타입별명지정 별명이름 = 그 이름을 가진 타입의 형태는?
    // 타입 이름의 첫 글자는 무조건 대문자.