Swift-Function


기본적인 함수의 선언.

  • 파라미터 없음.
func sayHello() {
    return "Hello Baby~"
}
sayHello()
  • 파라미터 있음.
func printMyName(name: String) {
    print("내 이름은 \(name) 입니다.")
}
printMyName("Yoseop") // 내 이름은 Yoseop 입니다.
func sum(param1: Int, param2: Int) {
    print("두 수의 합은 : \(param1+param2)")
}
sum(1, param2: 2) // 두 수의 합은 : 3
func sum(param1: Int, param2: Int, param3: Int) {
    print("수의 합은 : \(param1+param2+param3)")
}
sum(1, param2: 2, param3: 5) // 수의 합은 : 8
  • 파라미터의 개수 제한없이...
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,)

함수의 리턴값. ( -> (자료형) )

  • Int 형
func sum(param1: Int, param2: Int) -> Int {
    return param1+param2
}
let result = sum(1, param2: 2) // 3
  • String 형
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)

// moveNearerToZero now refers to the nested stepForward() function
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])
// minMax.min - 최소값
// minMax.max - 최대값
  • 함수 할당
func someFunction(left: Int, right: Int) {}
func anotherFunction(left: Int, right: Int) {}
func functionWithDifferentLabels(top: Int, bottom: Int) {}

var f = someFunction // The type of f is (Int, Int) -> Void, not (left: Int, right: Int) -> Void.
f = anotherFunction              // OK
f = functionWithDifferentLabels  // OK

func functionWithDifferentArgumentTypes(left: Int, right: String) {}
func functionWithDifferentNumberOfArguments(left: Int, right: Int, top: Int) {}

f = functionWithDifferentArgumentTypes     // Error
f = functionWithDifferentNumberOfArguments // Error

results matching ""

    No results matching ""