//: 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

+ Recent posts