티스토리 뷰

CS/Swift

[Swift]함수

Napster 2017. 11. 1. 13:30

Swift

4장 함수

함수와 메서드는 기본적으로 같은것 하지만 상황이나 위치에 따라 다른 용어로 부르는 것 뿐이다. 구조체, 클래스, 열거형등 특정 타입에 연관되어 사용하는 것을 메서드, 모듈 전체에서 전역적으로 사용할 수 있는 함수를 그냥 함수라고 부른다.

여기서 잠깐! 항상 헷갈리는 오버라이드와 오버로드 용어정리!

오버라이드: 함수의 재정의오버로드: 함수의 중복 정의

import UIKit

//매개변수로 기본값을 갖는 함수도 만들 수 있다.
func sayHello(_ name: String, times: Int = 3) -> String{
  var result: String = ""
  for _ in 0..<times{
      result += "Hello \(name)" + " "
  }
  return result
}

print(sayHello("hana"))
print(sayHello("simchun", times: 2))

스위프트에서는 특이하게 함수를 타입으로 사용할 수 있다. 예를 들면

func basic(name: String, age: Int) -> String{
  return
}

다음과 같은 함수의 데이터 타입은 (String, Int) -> String 으로 할 수 있다. 이런식으로 표현된 함수 데이터 타입을

import UIKit

typealias CalculateTwoInts = (Int, Int) -> Int

func addTwoInts(_ a: Int, _ b: Int) -> Int {
  return a + b
}

var mathFunction: CalculateTwoInts = addTwoInts
mathFunction(2, 5) //7

func printMathResult(_ mathFunction: CalculateTwoInts, _ a: Int, _ b:Int){
  mathFunction(a, b)
}

printMathResult(addTwoInts, 3, 5)

위의 mathFunction을 함수를 데이터 타입으로 정할 수 있다는 뜻이다. 자연스럽게 mathFunction변수는 함수 처럼 값을 넣어서 사용 할 수 있고 동작도 함수의 동작과 같은 동작을 수행한다!

또한 함수의 전달 인자로도 넘겨 줄 수 있다. 마찬가지로 반환값에도 넣어 줄 수 가 있다.

5장 구조체와 클래스

구조체와 클래스는 프로퍼티(데이터)와 메서드(기능)를 사용하여 구조화된 데이터와 기능을 사용 할 수 있다.

구조체의 인스턴스는 값이고클래스의 인스턴스는 참조값이다.

import UIKit

struct BasicInformation{
  var name: String
  var age: Int
}

var yagomInfo: BasicInformation = BasicInformation(name: "yagom", age: 99)

class Person{
  var heigth: Float = 0.0
  var weight: Float = 0.0
}

6장 옵셔널

데이터를 박스로 감싸, 아에 없는 값을 표현하기 위해 옵셔널의 개념이 나왔다. Int? 스위프트는 안전하게 데이터를 다루는 것을 강조하는 언어이다.

Error Handling

throws라는 명령어가 있는 함수는 중간에 빠져나올 수가 있기 때문에 do { try } catch가 필요하다.


'CS > Swift' 카테고리의 다른 글

[Swift]오늘의 이슈 - 예외처리관련  (0) 2017.11.05
[Swift]String 문자열 하나씩 쪼개기  (1) 2017.11.03
[Swift]Closure  (2) 2017.11.01
[Swift]흐름제어  (0) 2017.11.01
[Swift]기본, 데이터 타입  (0) 2017.11.01
Comments