Ternary Operator (삼항연산자 / 조건연산자)question ? answer1 : answer2 만약 question이 true라면, answer1을 return하고, false라면 answer2를 return 한다.question을 제외한 answer1과 answer2의 자료형은 같아야 한다. 예시를 보자. let timeDifference = 8timeDifference > 7 ? "시차가 큽니다." : "시차가 크지 않습니다." //"시차가 큽니다."let mungchiIsCute = truemungchiIsCute == false ? "맞습니다" : "ㅡ_ㅡ" //"ㅡ_ㅡ"let thisYear = "2024"thisYear > 2022 ? "맞아요" : "아니에요" //"아니에..
표현식 (expression)- 표현식은 코드를 실행했을때 하나의 결과값이 나오는 코드- Tokens = 문법적으로 더 이상 나눌 수 없는 요소1 + 21과 +와 2는 각각의 토큰이다. 따라서 위에는 3개의 토큰이 있는 셈이다.그리고 또다른 예로 if라는 키워드는 "if"라는 키워드 자체가 하나의 토큰이다. 공백을 부여한다면 더이상 제대로 된 하나의 토큰이 아니다.var나 let도 마찬가지겠지? swift에서 지정한 이러한 코드들은 그 자체로 하나의 토큰이다.- 표현식이 하나 이상 모여서 특정 기능을 실행하는 코드를 문장이라고 함. Literals- 숫자 7 처럼 의미가 변경되지 않고 있는 그대로 사용되는 값.// ex)let x2 = x > 7위의 코드에서 Literal은 7밖에 없다.- 이름에 숫자..
Scope (범위)- 변수와 상수는 모두 자기만의 범위(Scope)를 가지고 있다.- 자신이 속한 범위 내에서 항상 유일한 이름을 가져야 한다.- 상위 Scope에서는 하위 Scope에 선언되어 있는 상수와 변수에 접근 할 수 없다.- 서로 다른 범위에 동일한 이름이 있다면 가장 인접한 범위에 있는 이름을 사용한다.- Brace { }로 Global과 Local을 구분한다.- Gloabl Scope가 아닌 다른 모든 Scope는 시작과 끝이 명확해야 한다. Global Scope (전역 범위)- 어떠한 Brace { }에도 속하지 않음. 단 하나만 존재함.- 동일한 범위에 있는 변수와 상수에 접근할 수 있음.- 동일한 범위에서는 이전에 선언되어 있는 변수와 상수에만 접근할 수 있음.- 선언 순서에 상관..
Functions(함수)- 특정 기능을 수행하는 코드 조각- 언제든지 다시 사용이 가능하다.쉽게 말해서 나만의 함수를 만드는 것! calling Functions 함수를 가져다 쓰는 것. SyntaxfunctionName(parameters) Defining Functions함수를 직접 만들어 쓰는 것. Syntaxfunc name(parameters) -> ReturnType { statments}ReturnType에는 함수가 return하는 값의 형식을 선언한다.그리고 함수의 이름은 lowerCamelCase로 지어야 한다.parameter는 생략할 수 있다. 아래의 코드가 예가 될 수 있다.func sayHello() { print("hello, swift")}sayHello()위처럼 sayHe..
Initializer- 객체를 생성할 때 초기 상태를 설정하는 메소드- 클래스, 구조체(Structure), 열거형(Enumeration)을 만들 때 호출됨- 주 용도는 속성 값을 초기화 하는 것 // Syntaxinit() {} Initialization이 굳이 왜 굳이 필요한지 찾아보았다.처음 사용되기 전에, 타입의 새로운 인스턴스가 올바르게 초기화되는 것을 보장하기 위해서 필요한 과정이라고 한다.즉 초기화 없이 사용하다가 올바르지 않은 값이 사용되는 것을 막고 안전성을 보장하기 위한 기초공사라고 생각하면 된다. 그럼 실제로 사용해보겠다. class car { var model: String var hp: Int init(model: String, age: Int) { ..
Type Casting타입 캐스팅은 아래와 같은 역할을 한다.- 인스턴스의 타입을 확인한다- 해당 인스턴스를 자신의 클래스 계층에 있는 상위 또는 하위 클래스로 처리한다. 타입 캐스팅 연산자expression is type // 타입 확인 연산자expression as type // 업캐스팅 연산자expression as? type // 다운캐스팅 연산자expression as! type // 다운캐스팅 연산자 두 다운 캐스팅 연산자들의 차이를 보자면,as?는 옵셔널이다. 성공하면 옵셔널을 반환, 실패하면 Nil을 반환as!는 강제로 캐스팅한다. 실패하면 당연히 에러가 발생한다.
문자열보간문자열보간이란, 문자열 내부에 변수 var를 배치하여 좀 더 유용하게 사용할 수록 하는 기능이다. // Syntaxvar exInt: Int = 2024var sti = "올해의 연도는 \(exInt)"// 아래와 같이 출력 될 것이다.// 올해의 연도는 2024 문자열 내부에서 \(변수이름) 을 넣어서 사용한다. 문자열 보간은 변수 배치에만 한정되는게 아니라 그 안에서 코드를 실행할 수도 있다.문자열 보간이 존재하는 이유는정적인 문자열만이 아닌, 사용자 지정 데이터와 결합된 형태로 제공할 수 있다.즉 실제 사용자 데이터를 표시할 수 있다.자주 변하거나 실시간으로 변하는 값을 출력할 때 사용하면 좋다. 예제를 하나 만들어 보자.var model = "RTX3070"var ea = 2var p..
Data Types데이터 타입의 컨셉은- 자료형을 데이터 타입 또는 줄여서 타입이라고 함.- 저장한 데이터에는 타입이 존재- 다양한 타입들에 다양한 쓰임새- 자료형은 메모리에 저장되는 메모리의 종류와 크기를 결정함.- Swift는 계산을 할 때 자료형을 통일시켜야 한다.// ex)Int + Double = X // 👎🏻Int + Int = Int // 👍🏻Double + Double = Double // 👍🏻 내장 자료형- Interger Types : 정수 자료형 Int- Floating-Point Types : 32비트 부동 소수점 자료형 // ex. 3.14와 같은 실수 Float - Double Types : 64비트 부동 소수점 자료형- Boolean Types : 참과 거짓 Bool..
반복문- 같은 코드를 여러번 반복해주는 방법- 코드를 간결하게 만들어주는 방법for item in ["apple", "banana", "cherry"] { // 각 아이템에 대해 실행된다. 같은 코드를 다른 변수로 여러 번 반복해주는 방법이다.}for index in 1 ... 5 { // 1부터 5까지 실행됨} 반복문은 따로 설명이 필요 없을만큼 간단하다!
컬렉션같은 타입의 여러개의 변수를 하나로 묶음방법에 따라 여러가지가 존재함 배열(Array)- 같은 데이터를 하나의 변수에 넣는 방법var fruits: [String] = ["apple", "banana", "cherry"]fruits.append("Date")let firstFruit = fruits[0] // applefruits.isEmpty //비어있다면 ture, 아니라면 falsefruits.count //3. 배열의 갯수를 카운트함let emptyArray:Int = [] //빈 배열 생성. 하지만 빈 배열 생성시에는 꼭 타입을 명시해주어야함.String에 [ ] 가 감싸져 있다. 여러개의 [문자열]이 들어온다는 의미로 해석할 수 있다.과일 하나하나 일일히 변수로 만들 수 없기 때문..