[인프런 강의] Swift 문법 -2

2019. 7. 17. 20:36

Basic operator textbook

- 기본 연산자 : 다른 언어들과 비슷하지만 그 이외에 스위프트에서만 쓰이는 문법 중점으로 소개

= : 값을 할당하는 연산자

... : 사용법, 정식명칭? (사용법은 조금 이따가 배울 것)

 

- Assignment Operator

= : 초기화를 하거나 값을 업데이트 하는 것

ex) let b = 10

     let (x, y) = (1, 2) //스위프트에서 튜플이라는 것이 있음, 잘 쓰지는 않지만 이런 방법도 가능하다

- Arithmectic Operator

+, -, *, / 등 나머지 기본 연산자는 다른 언어와 동일

나머지 연산자: 9%4 나누고 1이 남는 것이 return 이 되는 것

- Compound Assignment Operator 

+=: 누적 연산자 -> [a += 2] == [a = a+2]

- Closed Rang Operator

a...b: a부터 b값을 정해서 리턴 (중요한 것은! a와 b도 범위에서 포함되는 것)

ex) for index in 1...5 { ~

> Half-Open Range Operator: a..<b (중요한 것은! b는 포함되지 않는다는 것)

 

Control Flow(흐름 제어하기)

- for문, if문으로 실행 제어하기

>For-In문: 반복할 때 사용, 순서대로 반복할 때 쓰는 제어문

1
2
3
4
5
6
7
let names = ["A""B', "C", "D"]
for name in names {
    print{"Hello, \{name}!"}
}
 
//names에 있는 것들이 name으로 받아져서 
//하나씩 출력된다!
 

위의 방법은 for문을 배열에 사용하는 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
let minutes = 60
 
for tickmark in 0..<minutes {
    //60번 반복하기
}
let minuteInterval = 5
for tickmark in stride(from: 0, to:minutes, by: minuteInterval) {
        //0부터 60까지 5간격으로 실행
        //0, 5, 10 ... 45, 50, 55(60까지 안감)
}
//But
let hours = 12
let hourInterval = 3
for tickmark in stride(form:3, trough: hours, by: hourInterval) {
    //3부터 12까지 3간격으로 실행
    //3, 6, 9, 12(끝까지 감)
}
 
 
 

반복문을 일정한 간격으로 동작하게 할 수 있는 다양한 방법

* 주의사항: swift에서 ++변수, --변수는 swift2에서까지밖에 안쓰고 현재는 없어졌음

+) stride에서 to와 trough의 차이점 : to는 마지막 숫자 포함하지 않음, trough는 마지막 숫자 포함!

 

- while문

 

- Swtich문: 스위프트에서는 유용하게 쓰임(중점으로 다루기)

스위치문의 개발 조건:

swtich 조건{

case value1: 

//value에 조건이 맞으면 실행,,,

default는 무조건 작성해주어야 에러가 나지 않음을 유의하자

switch문은 break 쓰지 않아도 됨 자동으로 동작한다

case의 바디 부분을 작성하지 않으면 에러가 난다(항상 case의 바디 부분은 필수로 작성해주어야 함)

if문처럼 case 12..<100: 처럼 범위 조건을 걸어서 사용할 수 있다!

+) 참고: case(0, _): 일때 여기서 언더바(_)는 어떤 조건이 들어가도 상관이 없다는 뜻이다

 

if문과 switch문 참고 기본 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//: Playground - noun: a place where people can play
 
import UIKit
 
let age = 18
 
if age < 3 {
    print("baby")
}else if age >= 3 && age < 20 {
    print("child")
else {
    print("adult")
    }
 
switch age {
case 012:
    print("baby")
case 21:
    print("adult")
case 3...19:
    print("child")
default:
    print("none!")
}
 
 
 

 

Function

한마디로 실행할 수 있다는 뜻, 함수를 불러온다 = 함수를 call한다

주어진 동작에서 값을 입력하고, 값을 리턴하는 것을 함수라고 한다/ 기본 동작: 값이 들어가고 나오고

func 함수이름(파라미터) -> 리턴타입 { ~

단, 파라미터 없이도 가능하다, 리턴타입 없는 함수도 사용이 가능하다

리턴 타입을 정해주지 않으면 타입이 없는건데, 이건 없는 타입이 아니라 void 타입이라는 것을 알자

 

Function Parameter

- 디폴드 값으로 파라미터는 Argument 레이블로 쓰이고 있다?

1
2
3
4
5
6
func greet(person: String, from hometown: String-> String {
    return "Hello \(person)! Gald you could visit from \(hometown)."
}
 
//using this function
print(greet(person: "Bill", from: "Cupertino"));
 

이 코드에서 보면, 파라미터는 person: String 이 부분인데 Argument 레이블이 따로 지정되지 않았으므로 디폴트 값인 파라미터 네임 즉 person이 Argumetn label임과 동시에 파라미터로 쓰이는 것이다. 

우선 정확히 말하자면, 파라미터는 함수 안에서 값을 받아 내부적으로 쓰일 수 있는 변수이고, Argument label은 함수를 선언할 때 삽입 시 항목 네임을 말하는 것 정도로 생각할 수 있다. 그래서 밑에 선언된 함수에 값을 넣는 것을 보면 그렇게 쓰이는 것을 짐작할 수 있다.

참고로 이 함수의 리턴 타입은 String인 것도 알 수 있다.

 

파라미터의 디폴트 값을 따로 지정해서 값을 넣지 않았을 경우 자동으로 값이 들어가게 된다.

 

'Undergraduate Records' 카테고리의 다른 글

[Baekjoon] 함수 : 4673 문제  (0) 2019.07.19
[Vmware 설치]Mac os mojave 설치  (0) 2019.07.19
[Beakjoon] 1차원 배열 : 4344번  (0) 2019.07.17
3회차 모각코 결과  (0) 2019.07.17
3회차 모각코 목표  (0) 2019.07.17

BELATED ARTICLES

more