2주차 Swift 문법 스터디
변수와 자료형
변수는 var 상수는 let
변수는 수정이 가능하며, 상수는 수정이 불가능하다.
var 변수이름 : Int = 1// 변수 선언 let myConstant:Int = 2// 상수 선언
기본 자료형
Swift의 기본 내장 자료형은 아래와 같다.
- 정수형 : Int(음수 양수 가능), UInt(음수 불가)
- 실수형 : Float(소숫점 6자리까지), Double(소숫점 15자리까지 정확성)
- 참 거짓: Boolean _ true false
- 문자 : Character
- 문자열 : String
이들의 사용법은 기본적으로 위의 변수/상수 선언시 처럼 선언한다.
swift에서는 서로 다른 자료형 저장 불가
원하면 double(a) + b or a + Int(b) 형태로 계산
산술연산자, 논리연산자
산술 연산자
-
- / * % …
논리 연산자
- 논리 부정 NOT ( !a )
- 논리 곱 AND ( a && b)
- 논리 합 OR ( a || b )
이외의 연산자
1) 단항 연산자
-a, !b, c!와 같이 대상 앞뒤에 바로 붙여서 사용하는 연산자
2) 이항 연산자
2 + 3 과 같이 두 대상 사이에 위치하는 연산자
3) 삼항 연산자
a ? b : c 형태로 참과 거짓에 대한 조건을 나타내는 연산자
할당 연산자
할당 연산자는 값을 초기화하거나 변경할 때 사용합니다.
아래와 같이 상수, 변수 모두 사용 가능합니다.
let b = 10
var a = 5
a = b // a 값은 10
let (x, y) = (1, 2) // x 는 1, y 값은 2 가 됩니다.
print("x : \\(x), y : \\(y)") // x : 1, y : 2
if x = y {
// x = y 는 값을 반환하지 않기 때문에 이 문법은 올바르지 않습니다.
}
비교 연산자
Swift에서는 비교를 위한 비교 연산자로서 아래와 같은 연산자를 지원합니다.
- 같다 (a == b)
- 같지않다 (a != b)
- 크다 (a > b)
- 작다 (a < b)
- 크거나 같다 (a >= b)
- 작거나 같다 (a <= b)
범위 연산자
Swift에서 지원하는 특별한 연산자로서 특정 범위에 대해서 지정할 수 있는 범위 연산자입니다.
// 닫힌 범위 연산자(Closed Range Operator)
// (a..b)의 형태로 범위의 시작과 끝이 있는 연산자 입니다. for-in loop에 자주 사용됩니다.
for index in 1...5 {
print("\\(index) times 5 is \\(index * 5)”)
}
// 1 times 5 is 5
// 2 times 5 is 10
// 3 times 5 is 15
// 4 times 5 is 20
// 5 times 5 is 25
// 반 닫힌 범위 연산자(Half-Open Range Operator)
// (a..<b)의 형태로 a부터 b보다 작을 때까지의 범위를 갖습니다. 즉, a부터 b-1까지 값을 갖습니다.
let names = ["Anna", "Alex", "Brian", "Jack"]
let count = names.count
for i in 0..<count {
print("Person \\(i + 1) is called \\(names[i])")
}
// Person 1 is called Anna
// Person 2 is called Alex
// Person 3 is called Brian
// Person 4 is called Jack
// 단방향 범위(One-Side Ranges)
// [a..] [..a]의 형태로 범위의 시작 혹은 끝만 지정해 사용하는 범위 연산자 입니다.
let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names[2...] {
print(name)
}
// Brian
// Jack
for name in names[...2] {
print(name)
}
// Anna
// Alex
// Brian
for name in names[..<2] {
print(name)
}
// Anna
// Alex
// 단방향 범위 연산자는 subscript뿐만 아니라 아래와 같이 특정 값을 포함하는지 여부를 확인할 때도 사용 가능합니다.
let range = ...5
print(range.contains(7)) // false
print(range.contains(4)) // true
print(range.contains(-1)) // true
삼항 조건 연산자
삼항 조건 연산자는 question ? answer1 : answer2의 구조를 갖습니다.
question 조건이 참인경우 answer1이 거짓인 경우 answer2가 실행됩니다.
if, switch, guard
- if
if<bool 조건식>{
//...
} else if { …
} else { …
}
- guard
- 후속 코드가 실행되기 전 조건을 만족하는지 확인하는 용도로 쓰인다. 특정 조건을 만족하지 않고 후속코드를 실행하지 못하도록 오류발생을 예방하는 코드로 사용된다.
guard <조건식 또는 표현식> else{
<조건식 또는 표현식 결과가 false일 때의 코드>
}
<aside> 🔥 if문 과의 차이점
else구문이 반드시 필요하다.
참일때의 실행코드블럭이 없다.
</aside>
<aside> 🔥 장점
코드의 중첩을 막아준다.
→ guard구문을 많이 사용해도 코드의 depth가 깊어지지 않는다.
</aside>
import Foundation
funcdivide(number:Int){
guard number != 0else{
print("0으로 나눌 수 없습니다.")
return
}
let result = 100/number
print("\\(result)")
}
divide(number: 0)
- switch
switch <비교대상>{
case<비교패턴1>:
<수행코드1>
case<비교패턴2>:
<수행코드2>
default:
<비교패턴들과 일치하지 않을 때 수행 코드>
}
let sampleChar :Character = "a"
switch sampleChar{
case "A":
print("글자는 A입니다.")
case "a":
print("글자는 a입니다.")
default:
print("일치하는 글자가 없습니다.")
}
swift의 switch문은 모든 조건을 만족할 수 있는 case를 만들지 않으면 반드시 default블럭을 작성해주어야 합니다.
var value = (5,4)
switch value{
caselet(x, 3):
print("x값이 \\(x)이고 y값이 3인 튜플")
caselet(3, y):
print("x값이 3이고 y값이 \\(y)인 튜플")
caselet(x, y):
print("x값이 \\(x)이고 y값이 \\(y)인 튜플")
}
위의 예제의 경우 모든 조건을 만족하는 switch문을 작성했기 때문에 default블럭을 생략해도 오류가 나지 않습니다. 하지만 만족하지 않는 구문의 경우 오류가 발생합니다.
var value = (3, -3)
switch value{
caselet (x,y)where x==y:
print("\\(x)와 \\(y)는 x==y 선상에 있음")
caselet (x,y)where x==-y:
print("\\(x)와 \\(y)는 x==-y 선상에 있음")
caselet (x, y):
print("\\(x) \\(y)는 일반좌표상에 있음")
}
for Loop, while Loop
<aside> 🔥 for loop_일정 횟수가 정해져 있을 때
for number in 1...5 {
// body of loop
}
... -> 1~5 까지
..< -> 1~4 까지
</aside>
<aside> 🔥 while loop_일정 조건이 정해져 있을 때
while (condition){
// body of loop
}
</aside>
break, continue, label
- break
- 반복을 중단한다.
- continue
- 현재 실행중인 반복을 중지하고, 다음 반복을 실행한다.
- labelbreak LabeledName
- 원하는 문장을 제어하고싶을 때 label처리를 해 제어한다
'FE 공부 > Swift' 카테고리의 다른 글
Swift - TableView _ Edit Mode (0) | 2022.11.29 |
---|---|
Swift - TableView _ Managing Selection (0) | 2022.11.29 |
Swift - TableView Section (0) | 2022.11.22 |
Swift - Alert Controller (0) | 2022.11.22 |
Swift _ StackView (0) | 2022.11.15 |
댓글