Swift-Function
기본적인 함수의 선언.
func sayHello() {
return "Hello Baby~"
}
sayHello()
func printMyName(name: String) {
print("내 이름은 \(name) 입니다.")
}
printMyName("Yoseop")
func sum(param1: Int, param2: Int) {
print("두 수의 합은 : \(param1+param2)")
}
sum(1, param2: 2)
func sum(param1: Int, param2: Int, param3: Int) {
print("수의 합은 : \(param1+param2+param3)")
}
sum(1, param2: 2, param3: 5)
func sum(numbers: Int...){
var sum = 0
for number in numbers {
sum += number
}
print("수의 합은 \(sum)")
}
sum(2, 4, 6, 8)
sum(1, 3, 5, 7, 9, 11,)
함수의 리턴값. ( -> (자료형) )
func sum(param1: Int, param2: Int) -> Int {
return param1+param2
}
let result = sum(1, param2: 2)
func sayHello() -> String
{
return "Hello Baby~"
}
let sayHelloString = sayHello()
func hello(name: String) -> String
{
return "Hello. Mr.\(name)."
}
let sayHello = hello("YoSeop")
func chooseStepFunction(backward: Bool) -> (Int) -> Int {
func stepForward(input: Int) -> Int { return input + 1 }
func stepBackward(input: Int) -> Int { return input - 1 }
return backward ? stepBackward : stepForward
}
var currentValue = -4
let moveNearerToZero = chooseStepFunction(backward: currentValue > 0)
while currentValue != 0 {
print("\(currentValue)... ")
currentValue = moveNearerToZero(currentValue)
}
파라미터 작성에대한 세가지 방법
- 일반적인 방법 (첫번째 파라미터의 변수 값 생략)
func functionName(param1: String, param2: String) {
print("param1 : \(param1)")
print("param2 : \(param2)")
}
functionName("VALUE1", param2: "VALUE1")
func functionName(param1 param1: String, param2: String) {
print("param1 : \(param1)")
print("param2 : \(param2)")
}
functionName(param1: "VALUE1", param2: "VALUE1")
- 파라미터의 변수를 표시하고 싶지 않을 때, '_'를 파라미터 변수 앞에 넣어준다.
func functionName(param1: String, _ param2: String) {
print("param1 : \(param1)")
print("param2 : \(param2)")
}
functionName("VALUE1", "VALUE1")
func minMax(array: [Int]) -> (min: Int, max: Int)? {
if array.isEmpty {return nil}
var currentMin = array[0]
var currentMax = array[0]
for value in array[1..<array.count] {
if value < currentMin {
currentMin = value
} else if value > currentMax {
currentMax = value
}
}
return (currentMin, currentMax)
}
let minMax = minMax(array: [1,3,4,-1,99,10])
func someFunction(left: Int, right: Int) {}
func anotherFunction(left: Int, right: Int) {}
func functionWithDifferentLabels(top: Int, bottom: Int) {}
var f = someFunction
f = anotherFunction
f = functionWithDifferentLabels
func functionWithDifferentArgumentTypes(left: Int, right: String) {}
func functionWithDifferentNumberOfArguments(left: Int, right: Int, top: Int) {}
f = functionWithDifferentArgumentTypes
f = functionWithDifferentNumberOfArguments