브래의 슬기로운 코딩 생활
5 - 함수와 메서드(method) 본문
함수
#include <stdio.h>
void Fun( int Param ) // parameter(매개변수, 인자), 형식 매개변수(formal parameter)
{
printf("%d",Param);
}
int main()
{
Fun( 10 ); // 10은 argument(인수), 실 매개변수(actual parameter)
return 0;
}
매개변수 인자 리턴값
메서드(method)
함수를 선언하는 방법
func <함수명> (<매개변수 이름>: <매개변수 타입>, <매개변수 이름>: <매개변수 타입>,... ) -> <반환값 타입> {
// 함수 코드
}
void sayHello() { //C, C++
printf("Hello");
}
하나의 문자열과 하나의 정수를 매개변수로 받아서 문자열을 반환
func message(name: String, age: Int) -> String {
return("\(name) \(age)")
}
스위프트 함수 정의와 호출하기
<함수명> (<인자1>, <인자2>, ... )
func sayHello() { //->Void
print("Hello")
} // 함수 정의
sayHello() //호출
C언어에서 Swift 함수 변경
int add(int x, int y) { //C, C++
return(x+y);
}
cout << add(10,20);
func add(x: Int, y: Int) -> Int { //Swift
return(x+y)
}
print(add(x:10, y:20))
add함수의 자료형은 print(type(of:add)) // (Int, Int) -> Int
내부 매개변수(parameter name) 이름과 외부 매개변수(argument label) 이름
func add(first x: Int, second y: Int) -> Int {
//외부 내부:자료형,외부 내부:자료형 -> 리턴형
return(x+y) //함수 정의할 때는 내부 매개변수명을 사용
} //return(first+second)은 오류
add(first:10, second:20) //add(x:10, y:20)은 오류 //함수 호출할 때는 외부 매개변수명을 사용
func add(x: Int, y: Int) -> Int {
return(x+y)
}
add(x:10, y:20)
//외부 매개변수명 생략하면 내부 매개변수명이 외부 매개변수명까지 겸함
함수명이 궁금해요 : #function 리터럴(literal)
Swift 함수명
func add(first x: Int, second y: Int) -> Int {
print(#function) //add(first:second:)
return(x+y)
}
let a = add(first:10, second:20)
함수의 type은 모두 같고 함수명은 모두 다름
함수 타입 : print(type(of:add))
함수명 : print(#function)
디폴트 매개변수(아규먼트) 정의하기
func sayHello(count: Int, name: String = "길동") -> String {
return ("\(name), 너의 번호는 \(count)")
}
var message = sayHello(count:10, name: "소프트")
//소프트, 너의 번호는 10
var message = sayHello(count:100)
print(message) //길동, 너의 번호는 100
함수로부터 여러 개의 결과 반환하기
func converter(length: Float) -> (yards: Float, centimeters: Float, meters: Float) {
let yards = length * 0.0277778
let centimeters = length * 2.54
let meters = length * 0.0254
return (yards, centimeters, meters)
}
var lengthTuple = converter(length:10)
print(lengthTuple) // (yards: 0.277778, centimeters: 25.4, meters: 0.254)
print(lengthTuple.yards) // 0.277778
print(lengthTuple.centimeters) // 25.4
print(lengthTuple.meters) // 0.254
2개의 정수를 입력받아 가감제 리턴
//소수점 3자리에서 반올림
//import Foundation 추가해야 함
import Foundation
func sss(x : Int, y : Int) -> (sum : Int, sub : Int, div : Double)
{
let sum = x+y
let sub = x-y
let div = Double(x)/Double(y) //같은 자료형만 연산 가능
return (sum, sub, div)
}
var result = sss(x:10,y:3)
print(result.sum)
print(result.sub)
print(String(format: "%.3f", result.div))
가변 매개변수(variadic parameter)
func displayStrings(strings: String...)
{
for string in strings {
print(string)
}
}
displayStrings(strings: "일", "이", "삼", "사")
displayStrings(strings: "one", "two")
임의의 개수의 정수 값의 합을 출력하는 함수를 작성하여 호출
inout매개변수:call by reference 구현
Swift 3에서는 inout의 위치가 바뀜
//Swift 2, 지금은 오류
var myValue = 10
func doubleValue (inout value: Int) -> Int {
value += value
return(value)
}
doubleValue(value:&myValue)
//Swift 3이후
var myValue = 10
func doubleValue (value: inout Int) -> Int { // call by reference하고 싶은 매개변수의 자료형 앞에 inout 씀
value += value
return(value)
}
print(myValue)
print(doubleValue(value : &myValue)) //10 20 20 //call by reference하고 싶은 변수에 &붙여서 호출
print(myValue)
'2 - 겨울방학 > Swift 복습' 카테고리의 다른 글
7 - 클래스 (class) (0) | 2023.12.28 |
---|---|
6 - 1급 객체(first class object), 1급 시민(first class citizen), 클로저(Closure) (0) | 2023.12.28 |
4 - guard문, switch-case문 (0) | 2023.12.27 |
3 - 연산자(operator), 제어문 (0) | 2023.12.26 |
2 - 옵셔널 (optional), as(형 변환), is(타입 검사), Any와 AnyObject (1) | 2023.12.26 |