//: Playground - noun: a place where people can play
import UIKit
import Swift
func greeting(friend: String, me: String = "myname"){
print("Hello \(friend)! I'm \(me)")
}
greeting(friend: "friend_name") // Hello friend_name! I'm myname
greeting(friend: "michel", me:"whoami") //Hello michel! I'm whoami
func greeting(to friend: String, from me: String){
print("Hello \(friend)! I'am \(me)")
}
greeting(to: "friend_name2", from: "myname2") //Hello friend_name2! I'am myname2
//가변 매개변수
//전달 받을 값의 개수를 알기 어려울 때 사용할 수 있다.
// 가변 매개변수는 함수당 하나만 가질 수 있다. 맨 뒤에 위치하는 것이 좋다.
func sayHelloToFriends(me: String, friends: String...) -> String{
return "Hello \(friends)! I'am \(me)!"
}
print(sayHelloToFriends(me: "myname", friends: "friend_name1", "friend_name2", "friend_name3"))
//Hello ["friend_name1", "friend_name2", "friend_name3"]! I'am myname!
print(sayHelloToFriends(me: "myname2"))
//Hello []! I'am myname2!
// 스위프트는 함수형 프로그래밍 패러다임을 포함하든 다중 패러다임 언어입니다.
// 스위프트의 함수는 일급객체이므로 변수, 상수 등에 저장이 가능하고
// 매개변수를 통해 전달할 수도 있습니다.
var someFunction:(String,String) -> Void = greeting(to:from:)
someFunction("friend_name","my_name") //Hello friend_name! I'am my_name
someFunction = greeting(friend:me:)
someFunction("friend_name2","my_name2") //Hello friend_name2! I'm my_name2
// 타입이 다른 함수는 할당할 수 없다. 가변 매개변수 이기 때문에
// someFuction = sayHelloToFriends(me: friends:)
func runAnother(function: (String, String)-> Void){
function("a_name","b_name")
}
runAnother(function: greeting(friend:me:)) //Hello a_name! I'm b_name
runAnother(function: someFunction)//Hello a_name! I'm b_name
'Swift > 기초&문법' 카테고리의 다른 글
스위프트 swift 옵셔널 추출 (0) | 2018.08.15 |
---|---|
스위프트 swift 옵셔널 (0) | 2018.08.14 |
스위프트 swift 반복문 (0) | 2018.08.14 |
스위프트 swift 조건문 (0) | 2018.08.14 |
스위프트 swift 함수 기본 (0) | 2018.08.14 |