- Swfit는 등호 양쪽에 공백이 일관되게 있어야 한다.
var x =10
var x= 10
- Swift에서 자료형의 종류와 크기 알아보기
var x = 10
print(type(of:x)) //Int
let s = MemoryLayout.size(ofValue: x)//8
let t = MemoryLayout<Int>.size //8
print(s, t)
- 다양한 print 방법 알아보기
var x = 10
print(x) //10
print("x") //x
print("\(x)") //10
print("값은 \(x)입니다.") //값은 10입니다.
- Tuple
let myTuple = (10, 12.1, "Hi")
print(type(of:myTuple)) //(Int, Double, String)
let myTuple = (count: 10, length: 12.1, message: "Hi")
print(type(of:myTuple)) //(count: Int, length: Double, message: String)
print(myTuple.message, myTuple.2) //Hi Hi
var x : Int? //옵셔널 정수형 변수 x 선언
var y : Int = 0
x = 10 // 주석처리하면?
print(x) // Optional(10)
print(x!) // forced unwrapping해서 10
print(y) //0
//x = x+2 // error
//y = x // error
x = x! + 2
print(x) // Optional(12)
y = x!
print(y) // 12
- Optional
var x : Int?
//x = 10
print(!x)
//이런 식으로 초기값을 설정해 주지 않으면 에러가 발생한다.
var x : Int?
x = 10
if x != nil { // 주의: x!=nil 과 같이 작성하면 ! 연산자의 우선순위가 더 높기 때문에 x! = nil이 된다.
print(x!)
}
else {
print("nil")
}
//이런 식으로 초기값을 설정해 주거나, else문으로 처리해 주면 된다.
var x : String? = "Hi"
x! //1
if let a = x { //2
print(a)
}
let c = x ?? "" //3
let b = x?.count
// 여러 언래핑 방식이다.
- if let
var x : Int?
x = 10
if let xx = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x,xx) //Optional(10) 10
}
else {
print("nil")
}
var x : Int?
x = 10
if let x = x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x, x) // 10 10
}
else {
print("nil")
}
var x : Int?
x = 10
print(x) // Optional(10)
if let x { //옵셔널 변수 x가 값(10)이 있으므로 언래핑해서 일반 상수 xx에 대입하고 if문 실행
print(x) // 10
}
else {
print("nil")
}
var pet1: String?
var pet2: String?
pet1 = "cat"
pet2 = "dog"
if let pet1, let pet2 {
print(pet1, pet2) // cat dog
} else {
print("nil")
}
var age : Int?
age = 20
print(age) // Optional(20)
var myAge = age ?? 1
print(myAge) // 20
- nil 합병 연산자 (Nil-Coalescing Operator)
let defaultColor = "black"
var userDefinedColor: String? // defaults to nil
var myColor = userDefinedColor ?? defaultColor
//nil이므로 defaultColor인 black으로 할당됨
print(myColor) //black
userDefinedColor = "red"
myColor = userDefinedColor ?? defaultColor
//nil이 아니므로 원래 값인 red가 할당됨
print(myColor) //red, 주의 optional(red)가 아님
- Int? vs Int!
let x : Int? = 1
let y : Int = x!
let z = x
print(x,y,z) //Optional(1) 1 Optional(1)
print(type(of:x),type(of:y),type(of:z))
//Optional<Int> Int Optional<Int>
let a : Int! = 1 //Implicitly Unwrapped Optional
let b : Int = a //Optional로 사용되지 않으면 자동으로 unwrap함
let c : Int = a!
let d = a //Optional로 사용될 수 있으므로 Optional형임
let e = a + 1
print(a,b,c,d,e) //Optional(1) 1 1 Optional(1) 2
print(type(of:a),type(of:b),type(of:c),type(of:d), type(of:e))
//Optional<Int> Int Int Optional<Int> Int
- Int! 형을 property로
class MyAge {
var age : Int!
init(age: Int) {
self.age = age
}
func printAge() {
print(age) //optional(1)
print(age+1) //2, age! + 1 라고 쓰지 않아도 됨
let age1 : Int = age
print(age1) //1
let age2 = age + 2
print(age2) //3
}
}
var han = MyAge(age:1)
han.printAge()
- is
let x = 1
if x is Int {
print("Int형")
}
- for
for i in 1...5 {
print("\(i) 안녕")
}
for _ in 1...5 { // 이와 같이 _으로 생략 가능하다
print("안녕")
}
let names = ["A", "B", "C", "D"]
for name in names {
print(name)
}
//A
//B
//C
//D
let numberOfLegs = ["Spider": 8, "Ant": 6, "Dog": 4]
//dictionary는 key:value형식의 배열
for (animalName, legCount) in numberOfLegs {
print("\(animalName)s have \(legCount) legs")
}
- while
var myCount = 0
while myCount < 1000 {
myCount+=1
}
print(myCount) //1000
- continue
for i in 1...10 {
if i % 2 == 0 {
continue // 반복문 이후 모든 코드 건너뛰고 반복문 상단으로 감
}
print(i) // 홀수만 출력
}
- if
var x = 10
if x > 5 {
print("5보다 큽니다") // 참이므로 문자열 출력
}
var num = 3
if num == 1 || num == 3 {
print("당신은 남성이군요!\n") //출력
}else if num == 2 || num == 4 {
print("당신은 여성이군요!\n")
}else {
print("당신은 대한민국 사람이 아니군요!\n")
}
//다중 if문
- guard
guard let number = value else {//조건식이 거짓(nil)일 때 else 블록 실행
print("nil")
return
}
- switch ~ case
var value = 0
switch (value) // case문의 마지막에는 각각 break문이 포함되어 있다.
{
case 0:
print("영") //만약 실행문이 없다면 error
case 1:
print("일")
case 2:
print("이")
case 3:
print("삼")
default:
print("4이상")
}
case 1,3,5,7,8,10,12:
print("31 일입니다")
case 4,6,9,11:
print("30 일입니다")
// 이런 식으로 결합도 가능하다.
case 0...9:
count = "한자리 수"
case 10...99:
count = "두자리 수"
// 범위 지정도 가능
case 0...49 where temperature % 2 == 0: // 조건 추가 시 where절 사용
print("Cold and even")
case 50...79 where temperature % 2 == 0:
print("Warm and even")
case 4:
print("4")
fallthrough
case 3:
print("3")
fallthrough
// case문을 빠져나가지 않고 계속 내려가게 하려면 fallthrough 사용
- 함수
func sayHello() { //리턴값 없으면 굳이 자료형을 지정하지 않아도 된다. 자료형은 ()
print("Hello")
}
sayHello() //호출
func add(x: Int, y: Int) -> Int { // 자료형은 (Int, Int) -> Int
return(x+y)
}
add(x:10, y:20)
'iOS' 카테고리의 다른 글
Swift로 전광판 만들기 (0) | 2025.03.19 |
---|---|
Swift로 무드등 만들기 (0) | 2025.03.19 |
Swift 재활하기 (0) | 2025.03.05 |
Swift - 클로저(Closure) (0) | 2024.12.11 |
Swift 12 - Auto layout, LaunchScreen (0) | 2024.12.04 |