Swift - 특징, 변수, 상수, 타입

이한솔·2023년 7월 17일
0

Swift 문법 🍎

목록 보기
1/32

스파르타코딩 내일배움캠프를 통해 iOS 앱 개발을 배우고 있다.
비전공자인 나는 코딩 자체를 처음 접하는 것이라 처음부터 배워가야 하고,
빠르게 따라가고 싶어서 마음은 급하고 이해는 안되지만!!
오늘부터 하나씩 천천히 배운 것을 정리하면서 공부해보려고 한다.
몇 달 뒤, 몇 년 뒤에 나는 이 글을 보며 그땐 그랬었지-
생각할 수 있기를 😌😌


Swift 언어의 특징

안정성

Swift는 타입에 엄격한 프로그래밍 언어다.

  1. 타입 안정성을 위해 타입 체크를 해야한다.
  2. Swift는 nil(빈 값을 의미)에 엄격하다.
    컴파일 시 문제가 발생할 수 있는 nil 객체를 만들거나 사용할 수 없다.
    nil을 사용할 경우 ?모양의 옵셔널(Optional)을 이용하여 표시한다.
    (앱 실행시 문제 발생 가능성을 줄여 안전성을 높인 언어)

표현성

Swift는 표현성을 고려한 프로그래밍 언어다.

  1. 다중 패러다임 프로그래밍 언어 지원
    명령형 프로그래밍 패러다임, 객체 지향 프로그래밍 패러다임, 함수형 프로그래밍 패러다임, 프로토콜 지향 프로그래밍 패러다임 지원

 func greet(person: String, from hometown: String) -> String {
        return "안녕하세요, \(hometown)에서 오신 \(person)님!"
    }

greet(person: "한솔", from: "춘천")
// 출력값: 안녕하세요, 춘천에서 오신 한솔님! 
코드를 작성할 때 최대한 매끄럽게 읽히도록 코드를 작성하면 좋다 😃


변수 & 상수

값을 저장했거나 저장할 메모리 주소값을 이름으로 연결해 놓은 것
Initialize (초기화): 키워드로 선언된 변수나 상수에 처음으로 값을 대입하는 과정

변수 Variable

var: 변경할 수 있는 값 선언
변수의 값을 변경할 때에는 처음 저장했던 값과 일치하는 타입이어야 한다.

var age = 10 // Int 타입
age = 50 // Int 타입

상수 Constant

let: 변경할 수 없는 값 선언

let name = "세종"
name = "숙종" // 🚨Error: Change 'let' to 'var' to make it mutable

💡 왜 변수와 상수를 구분해서 쓸까?
프로그래밍 소스 관리 목적상 변하지 않는 값은 상수에 저장하는 것이 훨씬 효율적이다.
그 이유는 두가지로 정리할 수 있다.
1. 실수로 값이 변경되는 일을 막을 수 있다.
2. 값의 성격이 명확히 분류되므로 관리가 쉽다.



타입

숫자타입

Int: 정수를 표현하는 데이터 타입

var age: Int = 18 // Int 타입

Float: 소수점을 표현하는 데이터 타입으로 32비트 부동 소수를 표현
Float의 정밀도는 소수점 이하 6자리까지 가능

var interestRate: Float = 1.2345678910 // Float 타입
print("이자율은 \(interestRate) % 입니다")
// 출력값: 이자율은 1.2345679 % 입니다

Double: 소수점을 표현하는 데이터 타입으로 64비트 부동소수를 표현
Double의 정밀도는 소수점 이하 15자리 이상 가능
두 유형 모두 적합한 상황에서는 Double을 사용하는 것이 좋다 (출처: 공식 문서)

var interestRate: Double = 1.2345678910123456789 // Double 타입
print("이자율은 \(interestRate) % 입니다")
// 출력값: 이자율은 1.2345678910123457 % 입니다

참 혹은 거짓

Bool: 참 true와 거짓 false 을 표현할 수 있는 데이터 타입

var isMan: Bool = true // Bool 타입

문자

String: 문자열을 표현하는 데이터 타입으로 텍스트를 표현

var emptyString: String = "" 
var anotherEmptyString = String()  

var variableString = "Horse"
variableString += " and carriage"
print(variableString)
// 출력값: "Horse and carriage"

Character: 하나의 문자를 표현하는 데이터 타입

let catCharacters: [Character] = ["C", "a", "t", "!", "🐱"]
let catString = String(catCharacters)
print(catString)
// 출력값: "Cat!🐱"

모든 타입

Any: 다양한 데이터 타입의 값을 수용
Any 배열을 만들면 특정 타입의 배열이 아니라 여러 타입을 담을 수 있지만 Any 데이터 형을 대입하려면 반드시 형 변환이 필요

var anyArray: [Any] = [1,"Hi", true]

var anyValue: Any = 1000
anyValue = "어떤 타입도 수용 가능"
anyValue = 12345.67

// 컴파일 에러
let doubleValue: Double = anyValue  // 🚨 에러 메시지: Cannot convert value of type 'Any' to specified type 'Double'
// Any 타입에 Double 값을 넣는 것은 가능하지만
// Any는 Double 과 엄연히 다른 타입이 때문에
// Double 타입의 값에 Any 타입의 값을 할당할 때에는 명시적으로 타입을 변환해서 사용해야 한다.

2개의 댓글

comment-user-thumbnail
2023년 7월 18일

글이 많은 도움이 되었습니다, 감사합니다.

1개의 답글