[250310] swift 기초 문법

ON&OFF·2025년 3월 10일

iOS TIL

목록 보기
2/18

1. 변수와 상수

  • var (변수)

    • 변경할 수 있는 변수를 선언할 때 사용한다.
    • 추후에 다른 값으로 변경이 가능하다.
      var fruit: String = "apple"
  • let (상수)

    • 변경할 수 없는 변수를 선언할 때 사용한다.
    • 상수에 값을 넣으면 변경할 수 없다.
      let age: Int = 20

2. 기본 데이터 타입

  • Int (정수형)

    • 정수를 표현하는 데이터 타입이다.
    let age: Int = 18
  • Float(실수)

    • 3.1458, 0.1, -273.15 같은 실수를 표현하는 데이터 타입이다.
    • 소수점까지 표현할 수 있다.
    • 32비트의 메모리 공간을 차지하며, 소수점 이하 6자리까지 표현할 수 있다.
    let height: Float = 180.123456
  • Double(실수)

    • 3.1458, 0.1, -273.15 같은 실수를 표현하는 데이터 타입이다.
    • 소수점까지 표현할 수 있다.
    • 64비트의 메모리 공간을 차지하며, 소수점 이하 15자리까지 표현할 수 있다.
    let weight = 80.01234567890123
  • String(문자열)

    • 여러개의 문자를 저장하는 타입이다.
    • 문자열은 “Hello”, “Apple” 과 같이 연속된 문자다.
    • 쌍따옴표(")로 감싼 문자열을 사용한다.
    • \() 를 사용하여 변수나 상수를 사용할 수 있다.
      // " 쌍따옴표로 감싸서 문자열을 생성할 수 있습니다.
      let hello = "안녕하세요! 수강생 여러분" 
      // 쌍따옴표를 3개 연속사용하면 여러줄의 문자열을 만들 수 있습니다.
      let welcomeSwiftClass = """
      안녕하세요! 수강생 여러분
      Swift 강의에 오신걸 환영 합니다 :)
      """
      // 빈 문자열을 만들 수 있습니다.
      let emptyString2 = ""
      let emptyString = String()
      // 문자열 안에 변수나 상수의 값을 출력하고 싶다면 \()를 사용하세요!
      let age = 20
      print("저의 나이는 \(age) 입니다.") // 출력 : 저의 나이는 20 입니다. 
  • Character(문자)

    • 한 글자를 저장하는 데이터 타입이다.
      let char: Character = "A"  // Character(문자) 타입
      let character = "A" // String(문자열) 타입
      // Swift 컴파일러가 String으로 유추하여 자동으로 String 타입으로 설정
      // 문자열 배열을 String으로 만들 수 있어요.
      let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
      let catString = String(catCharacters)
      print(catString)
      // Prints "Cat!🐱"
  • Boolean(참 또는 거짓)

    • Boolean 타입(Bool)은 참 또는 거짓을 나타낸다.
    • 값은 오직 true 또는 false 두개로 참과 거짓을 결정하는데 사용한다.
    • true 는 참이고 false는 거짓이다.
      let isOrangeColorGreen = false
      let isAppleColorRed = true 
      let isArea: Bool = false
      print(isArea) // false 출력
  • Tuple

    • 기본적으로 제공하는 기본데이터 타입으로 개발하기에는 타입이 부족하다.
      그래서 나온 기능중 하나인 Tuple 은 데이터 타입의 값들을 그룹화 하여 하나의 타입처럼 사용할 수 있다.
    • 특징
      • 여러값을 하나로 묶어서 관리할 수 있다.
      • 튜플 내의 값들은 순서대로 저장되며, 각 값은 고유의 인덱스를 가진다.
      • 튜플의 각 값은 서로 다른 타입을 가질 수 있다.
    • 튜플의 사용 방법 (선언과 접근 방법)
      - 튜플을 선언할 때 소괄호()를 사용하며, 각 값을 쉼표로 구분한다.
      - 튜플의 값에 접근할 때는 Index(순서)를 사용하거나 이름을 붙여 접근할 수 있다.
      // 이름을 정하지 않은 튜플
      // () 안에 타입들을 모아서 사용합니다.
      // 선언 방법
      let person: (String, Int) = ("내배캠", 10)
      // 상수 person의 타입은 String, Int를 그룹화한 튜플이고, 값에는 ("내배캠", 10)을 할당합니다.
      // 접근 방법
      person.0 // "내배캠" -> person 상수의 0번째 값 입니다. (index는 0부터 시작합니다)
      person.1 // 10 -> person 상수의 1번째 값입니다. 
      // 이름을 붙인 튜플
      // 튜플을 선언할 때 값에 이름을 부여할 수 있습니다. 조금더 직관적이게 됩니다.
      // 선언 방법
      let person: (name: String, age: Int) = (name: "내배캠", age: 10)
      // 해석 : 상수의 이름은 person이고 타입은 String, Int를 그룹화한 튜플입니다.
      //       String에는 name이라는 이름을 붙였고 Int에는 age라는 이름을 붙였습니다.
      //       값에는 name에 "내배캠"을 할당했고, age에는 10을 할당했습니다. 
      // 접근 방법
      person.name // "내배캠" -> person의 name의 값
      person.age // 15 -> person의 age 값

3. 연산자

  • 대입 연산자

    • = 연산자는 값을 변수나 상수에 대입할 때 사용한다.
    • = 연산자 기준으로 뒤에 값을 앞에 대입(할당) 한다.
    • 변수의 데이터 타입이 같다면 다른 값으로 재할당 할 수 있습니다.
let age = 20 // 해석 : age 라는 상수에 20을 대입(할당)합니다.
// 이렇게 하면 age에는 실제 값이 20이 들어가있습니다.
  • 산술 연산자

    • 더하기
      + : 두 값을 더합니다.
      += : 기존 값에 더한 후 할당합니다.
      var result = 10 + 20 // result 변수에 10 + 20의 값 30을 할당합니다.
      print(result) // 출력 : 30
      result += 3 // result에 3을 더한 후 값을 할당합니다.
      print(result) // 출력 : 33
      let value = 5
      result += value // result에 value 값 더한 후 할당합니다.
      print(result) // 38 
    • 나누기
      / : 두 값을 나눕니다.
var result = 30 / 7 // result 변수에 30 나누기 7의 값인 4를 할당합니다.
print(result) // 출력 : 4
  • 곱하기
    * : 두 값을 곱합니다.
    *= : 기존 값에서 곱한 뒤 할당합니다.
var result = 10 * 3 // result 변수에 10 * 3의 값 30을 할당합니다.
print(result) // 출력 : 30
result *= 2 // result 값에 2를 곱한 값을 할당합니다.
print(result) // 출력 : 60
  • 나머지
    % : 두 값을 나눈 후의 나머지를 반환합니다.
var result = 10 % 3 // result 변수에 10/3의 나머지값 1을 할당합니다.
print(result) // 출력 : 

비교 연산자

  • 두 값을 비교하여 참(true)거짓(false)를 반환합니다.
`==` : 값이 같은지 확인
    - `a == b`  : a와 b가 같은지 확인
    - `1 == 1`  : 숫자 1과 숫자 1이 같은지 확인 → `true`
- `!=`  : 두 값이 다른지 확인
    - `a != b`  : a와 b가 같지 않은지 확인
    - `1 != 1`  : 숫자 1과 숫자 1이 같지 않은지 확인 → `false`
- `>`    : 왼쪽의 값이 오른쪽 값보다 더 큰지 확인
    - `a > b`  : a가 b보다 큰지 확인
    - `1 > 2`  : 12보다 큰지 확인 →  `false`
- `<`    : 왼쪽의 값이 오른쪽 값보다 더 작은지 확인
    - `a < b`  : a가 b보다 작은지 확인
    - `1 < 2`  : 12보다 작은지 확인 → `true`
- `>=`  : 왼쪽의 값이 크거나 같은지 확인
    - `a >= b`  : a가 b보다 크거나 같은지 확인
    - `1 >= 1`  : 11보다 크거나 같은지 확인 →  `true`
- `<=`  : 왼쪽의 값이 작거나 같은지 확인
    - `a <= b`  : a가 b보다 작거나 같은지 확인
    - `1 <= 1`  : 11보다 작거나 같은지 확인 → `true`

논리 연산자

  • (Bool 값을 조작하거나 결합할 때 사용합니다)

    • NOT 연산자
      • ! 키워드를 사용합니다.
    • !true 처럼 느낌표가 앞에 옵니다.
    • Bool 값을 반대로 반환하는 연산자
    • true → false
    • false → true
var allowedEntry = false
print(allowedEntry) // false가 출력됩니다.
print(!allowedEntry) // false의 반대값인 true가 출력됩니다
allowedEntry = !allowedEntry // allowedEntry 변수에 allowedEntry의 값 false 의 반대인 true를 대입합니다.
print(allowedEntry) // true가 출력됩니다.
  • AND 연산자

    • 두개의 값을 비교하여 두개의 값이 모두 true 일 때 true를 반환하는 연산자
    • 한개가 true이고 한개가 false일 때는 false를 반환합니다.
    • && 키워드를 사용합니다.
      true && true // true
      true && false // false
      false && false // false 
      let isHavingPan = false
      let isHavingPineApple = true
      let pineAppleApplePan = isHavingPan && isHavingPineApple 
      print(pineAppleApplePan) 
      // false isHavingPineApple이 false이기 때문에 전체값이 false가 됩니다.
  • OR 연산자

  • 두개의 값을 비교하여 한개만 true일 때 true를 반환하는 연산자
  • 한개가 true 이고 한개가 false일 때 true를 반환합니다.
  • || 키워드를 사용합니다.

false || false // false 

let isGreenPan = false

let isYelloPan = true 

let isHavingPan = isGreenPan || isYelloPan 

print(isHavingPan) // true
// isGreenPan, isYellowPan 둘 중 하나가 true여서 true가 할당됩니다.

```swift메이플 인벤 이상한 110g호
 []
  • 범위 연산자 : (숫자나 값의 범위를 나타낼 때 사용하는 연산자입니다)

  • 닫힌 범위 연산자(Closed Range Operator)
    • a...b 와 같이 ... 를 사용합니다.

    • 시작값과 마지막값을 모두 포함하는 범위를 정의할 때 사용합니다.

    • a...b a이상 b이하의 범위를 나타냅니다.

      (0...3) // 0,1,2,3 의 범위로 0이상 3이하의 범위를 포함합니다.
      
      (10...12) // 10, 11, 12 의 범위로 10이상 12이하의 범위를 포함합니다.
  • 삼항 연산자

    조건 ? 참일 때 반환값 : 거짓일 때 반환값 형태를 가진 연산자입니다.
let age = 20
let isAdult = age > 20 ? "성인 입니다" : "미성년자 입니다"
// 위에 코드를 번역해보면
// age 상수에 20 값을 할당합니다.
// isAdult 상수에 age가 20이면 "성인입니다"를 할당하고 아니면 "미성년자 입니다"를 할당합니다.
profile
안 되면 될 때까지

0개의 댓글