스위프트도 다른 언어들과 마찬가지로 데이터가 저장되는 메모리 내 주소 공간을 개발자가 쉽게 인식하고 사용할 수 있도록 변수와 상수를 제공한다.
변수와 상수의 선언 및 초기화 문법은 다른 언어들과 마찬가지로 비슷하다. 변수와 상수의 차이는 변수는 값을 변경할 수 있지만, 상수는 한 번 저장된 값을 다른 값으로 변경할 수 없다.
다른 언어와 다르게 신기했던 점은 두번 째 코드처럼 식별자를 다양한 문자와 기호 심지어는 이미지까지 넣을 수 있는 것이었다.
var vValue = 3 //변수 선언 및 초기화
var 🧑🏻💻 = "lsj"
let cValue = 3 //상수 선언 및 초기화
//문자형, 문자열형 둘다 "" 사용, '' 사용 -> X
var projectname = "ios study"
let language = "swift"
문자열 변수 혹은 문자형 변수에 값을 할당할 때는 위와 같이 작은 따옴표가 아닌 둘 다 큰 따옴표를 사용해야 한다.
변수와 상수의 이름을 정의 할 때는 다음과 같은 규칙을 따른다.
알파벳과 한글 자음 및 모음, 아라비아 숫자를 사용할 수 있으며, 특수 기호나 한자, 이미지용 바이너리 코드까지 사용할 수 있다.
연산자와 혼동할 수 있는 [+, -, *, / ] 및 공백은 변수, 상수명에 사용할 수 없다. 단, _는 사용할 수 있다
var day = 7 //선언과 초기화를 동시에
var year : Int //선언
year = 1999 // 초기화
스위프트에서는 변수의 선언과 초기화를 동시에 할 수도 있지만, 선언 이후 나중에 초기화를 할 수 있다. 위 코드에서 year뒤에 :Int를 제거하면 오류가 발생한다. 스위프트에서는 :Int와 같이 타입 어노테이션을 통해 변수나 상수를 선언할 때 그 타입을 명시적으로 선언해 줌으로써 어떤 타입의 값이 저장될 것인지를 컴파일러에 직접 알려주는 문법을 사용한다.
var name : String //명시적인 String 타입
var distance : Double //명시적인 Double 타입
//타입을 명시한 변수 선언
var name : String = "홍길동"
//타입을 명시한 상수 선언
let birthYear: Int = 1998
위 코드처럼 타입 어노테이션 문법을 매번 사용할 필요는 없다.
var name = "홍길동" 스위프트에 내장된 타입 추론기가 변수의 초기값을 이용해 타입이 무엇인지 추론해 낼 수 있기 때문이다. 홍길동 이라는 문자열이 초기값으로 설정 됬으니 다음부터는 name이라는 변수에는 문자열 타입만 올 수 있는 것이다.
var year : Int
year = 1999
var temper : Float = 3
var lastName : Character = "이"
예를 들어 위의 코드에서 3 앞에 : Float로 타입 어노테이션을 적어주지 않으면 Double로 결정이 되고 lastName 또한 : Character가 없다면 String으로 결정될 것이다. 따라서 이러한 경우에는 타입 어노테이션을 사용해야 한다.
var stmt = "꼼꼼한 재은씨의 키는"
var height = 185
var heighStmt = stmt + String(height)
// "꼼꼼한 재은씨의 키는 185"
String(height)은 정수값이나 기존의 변수를 문자열 타입으로 바꾸는 것이 아니라, 새로운 문자열 인스턴스를 만드는 것 임을 명심해야 한다. 기존의 변수에는 아무런 영향이 없고, 새로 생성하는 것이다.
let name = "이상준"
let birthYear = <"1998"
let info = "\(name)은 \(birthYear)년에 태어남!"
//이상준은 1998년에 태어남!
문자열 템플릿은 단순히 백슬래시와 괄호 안에 변수명 혹은 상수명을 집어 넣으면 끝이다.
쿼우팅이란 문자열을 따옴표로 묶어 표시하는 방법으로 글에서 대화나 인용 등을 구분하기 위해 사용한다.
let Hello = "Hi, I'm winny"
var message = Hello
print(message)
// HI, I'm winny
스위프트는 문자열을 처리할 때 큰따옴표를 사용하는 데, 이를 가리켜 더블 쿼우팅 이라고 한다.
"Swift" // String
"S" //Character 또는 String
//자바
"Java" //String
'J' //Character
스위프트에선 더블 쿼우팅으로 처리하기 때문에 문자열과 문자 타입을 확실히 구분해 주어야 한다.
//트리플 쿼우팅
let data = """
안녕하세요?
오랜만이에요.
피곤하네요!
"""
파이썬에서도 이러한 문법이 있는 것을 볼 수 있다
웬만한 연산자가 다른 언어들과 비슷하기 때문에 스위프트를 공부 하면서 처음 보는 연산자만 정리해 보겠다.
닫힌 범위 연산자는 주어진 a, b를 포함하는 범위를 나타내는 연산자이다.
1 ... 5 // 1, 2, 3, 4, 5를 나타낸다
반 닫힌 범위 연산자는 다음과 같다
1 ..< 5 // 1, 2, 3, 4를 나타낸다
1 ..> 5 //(x) 오류
스위프트의 기본적인 문법에 대해 알아보았다!!👍🏻