[Swift 기본 문법] 함수,조건문,반복문

dora·2024년 3월 11일

Swift 기본 문법

목록 보기
2/12

함수 기본

//파라미터O, 반환O
func sum(a: Int, b: Int) -> Int{
	return a+b
}

//파라미터O, 반환X
func printMyName(name: String)->Void{
	print(name)
}

//파라미터O, 반환X
func printMyName(name: String){
	print(name)
}

//파라미터X, 반환O
func maximumIntegerValue() ->Int{
	return Int.max
}

//파라미터X, 반환X
func hello() ->Void{print("hello")}

//파라미터X, 반환X
func bye() {print("bye)}


sum(a:3, b:5)
printMyName(name: "yagom")
printYourName(name: "hana")
maximumIntegerValue()
hello()
bye()

함수 고급

매개변수 기본값 설정

기본값을 가지는 매개변수는 가장 마지막에 적어주는 것이 좋다


func greeting (friend: String, me: String = "dora"){
	print("Hello\(friend)! I'm\(me)")
}

greeting(friend : "john")
greeting(friend : "sara")

전달인자 레이블

함수를 호출할 때, 매개변수의 역할을 좀 더 명확하게 하거나 함수 사용자의 입장에서 표현하고자 할 때 사용한다.

func greeting(to friend: String , from me : String){
	print("Hello \(friend)! I'm\(me)")
}

greeting(to: "hana", from: "dora")

함수 중복 정의도 편리하게 할 수 있다. 전달인자 레이블까지 함수명으로 판단하기 때문에 greeting은 두 가지 함수로 인식된다.

가변 매개 변수

전달 받을 값의 개수를 알기 어려울 때 사용한다.
가변 매개변수는 함수당 하나만 가질 수 있으며 맨 뒤에 위치하는 것이 좋다.

func sayHelloToFriends(me: String, friends: String...)
 ->String{
 	return "Hello\(friends)! I'm\(me)"
 }
 
 //전달인자가 여러 개여도 된다.
 print(sayHelloToFriends(me: "dora", friends: "hana","sara","eric"))
 
 //전달인자가 하나여도 된다
 print(sayHelloToFriends(me: "dora"))

데이터 타입으로서의 함수

스위프트는 함수형 프로그래밍 패러다임을 포함하는 다중 패러다임 언어이다.
스위프트의 함수는 일급 객체이므로 변수, 상수 등에 저장이 가능하다.

//함수를 데이터타입으로 표현할 때에는 반환타입을 생략할 수 없다.
var someFunction: (String, String)-> Void = greeting(to:from:)

someFunction("eric","dora")

someFunction = greeting(friend:me:)
someFunction("eric","dora")

하지만 다른 타입의 함수를 또 할당할 수는 없다

someFunction = sayHelloToFriends(me: friends:)	// 불가

함수 타입을 매개변수로 넘겨줄 수 있다.

func runAnother(function: (String, String)-> Void){
	function("jenny", "mike")
}

runAnother(function: greeting(friend: me:))

runAnother(function: someFunction)

조건문

if-else 구문

1,0으로 bool값을 대체할 수 없다.

if someInteger < 100{
	print("100 미만")
}else if someInteger >100{
	print("100 초과")
}else{
	print("100")
}

switch 구문

범위 연산자를 사용할 수 있다.

switch someInteger{
	case 0:
    	print("zero")
    case 1..<100:
    	print("1~99")
    case 100:
    	print("100")
    case 101...Int.max:
    	print("over 100")
    default:
    	print("unknown")
}

정수 외의 대부분의 기본 타입을 조건에 활용할 수 있다.
default구문을 무조건 써줘야 한다.

switch "dora":
case "dora":
	print("dora")
case "sarah":
	print("sarah")
default:
	print("unknown")

case구문 안에 break를 명시적으로 적어주지 않아도 된다. fallthrough

switch "dora":
case "dora":
	print("dora")
    fallthrough
case "sarah":
	print("sarah")
default:
	print("unknown")

반복문

for-in

다른 언어들의 foreach문과 비슷하다.

var integers = [1,2,3]
let people = ["dora": 10, "eric" : 15, "mike": 12]

for integer in integers{
print(integer)
}

for(name, age) in people{
	print("\(name): \(age)")
}

while

while integers.count >1 {
	integers.removelast()
}

repeat-while

기존의 do-while문과 비슷하다.
do라는 키워드가 swift의 오류 처리 구문에서 쓰이기 때문에 쓰이지 않는다.

repeat{
	integers.removeLast()
}while integers.count > 0

0개의 댓글