세세하게 변경된 부분이 많아서 테스트가 필요합니다.
아래 코드에 주석을 달아 놓았습니다.
//: Playground - noun: a place where people can play
import UIKit
//매개변수와 반환값이 모두 없는 함수
func printHello() {
print("안녕하세요")
}
printHello()
func sayHello() -> String {
let returnValue = "안녕하세요"
return returnValue
}
let returnVal = sayHello()
print(returnVal)
func sayHelloWithName(name : String) -> String {
let returnValue = "\(name)님 안녕하세요"
return returnValue
}
//Swift 3.0부터 첫번째 인자에 대한 매개변수명도 붙어야 한다.
let returnVal2 = sayHelloWithName(name: "전우치")
print(returnVal2)
//매개변수에 대한 기술
func printHelloWithName(name : String, welcomeMessage : String) {
print("\(name)님, \(welcomeMessage)")
}
//호출할 때
printHelloWithName(name: "전우치", welcomeMessage: "안녕")
//(실인자를 넘기기)
//Swift 3.0부터 inut키워드의 위치가 아래와 같이 변경되었다
func mySwap(a:inout Int, b:inout Int) {
let t=a; a=b; b=t;
}
var x = 100
var y = 200
mySwap(a: &x, b: &y)
print("x=\(x), y=\(y)")
//_를 사용해서 무시하기(파라메터명을 기술하지 않고 넘어간다!)
func compare(a:Int, b:Int, _:Bool) -> Bool {
return a > b
}
var result = compare(a:20, b:10, true)
print(result)
//메서드의 오버로드에 대한 데모
func mySwap(a:inout Int, b:inout Int, c:inout Int) {
let t=a; a=b; b=c; c=t
}
func mySwap(a:inout String, b:inout String) {
let t=a;a=b;b=t
}
var x1=1, y1=2, z1=3
mySwap(a: &x1, b: &y1, c: &z1)
print("x1=\(x1), y1=\(y1), z1=\(z1)") //x1=2, y1=3, z1=1
var str1="aa"
var str2="bb"
mySwap(a: &str1, b: &str2)
print("str1=\(str1), str2=\(str2)")
//함수의 인수 갯수나 형, 반환 값의 형이 다른 동일명의 별도 함수를 정의할 수 있다.
//스위프트에선 외부 인수명이 다른 동일명의 함수도 정의할 수 있다.
func mySwap2(a:inout Int, b:inout Int) {
let t=a; a=b; b=t
}
func mySwap2(little a:inout Int, great b:inout Int) {
if a > b {
let t=a; a=b; b=t
}
}
var s=20
var t=10
mySwap2(little: &s, great: &t)
print("s=\(s), t=\(t)")
댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.