func <함수명> (<매개변수 이름> : <매개변수 타입>, <매개변수 이름>: <매개변수 타입>, ...) -> <반환값 타입> { // 함수 코드 }
void sayHello(){ // 리턴값 없으면 void 쓰지만 swift에서는 생략가능하다
printf("Hello");
}
func sayHello(){ // return 값 없으면 생략이 가능하다
print("Hello")
}
func message(name: String, age: Int) -> String {
return ("\(name) \(age)")
}
int add(int x, int y){
return (x+y);
}
add(10, 20);
c언어 → swift 의 함수로 변경해보자
func add(x:Int, y:Int)->Int{
return (x+y)
}
let x = add(x:20, y:10)
// 상수 let에 넣자
print(x)
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(first x:Int, second y:Int)->Int{
return (x+y)
}
let x = add(first:20, second:10)
print(x)
func add(_ x: Int, with y: Int) -> Int {
return (x + y)
}
let x = add(10, with:20)
// 첫 번째 외부매개변수명만 생략하는 경우가 많다.
// objectC언어의 호출방식
// 두번째 매개변수부터는 외부매개변수를 사용
// 많이 사용하는 방법이다.
print(x)
(Int, Int) -> Int
⇒ 함수의 자료형 func add(_ a: Int, with b:Int) -> Int{
return (a+b)
}
print(type(of:add))
- (int) ddd:(int) x
{
return (x*2);
}
- (void) setX: (int) x
{
xx = x;
}
- (int) getX
{
return (x);
}
- (int) add:(int) x with: (int) y // 두번째 파라미터부터 이름을 지정한다.
{
return (x+y);
}
- (void) setXY:(int) x second: (int) y{
{
xx = x;
yy = y;
}
함수를 정의할 때 argument로 아무것도 안 넘겨주면 기본으로 작성할 값 ⇒ 기본값을 지정할 수 있다
(c++의 디폴트 매개변수와 동일한 개념이다)
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:20)
print(lengthTuple.yards)
print(lengthTuple.centimeters)
print(lengthTuple.meters)
0.555556
50.8
0.508
...
추가하면된다func 함수이름 (매개변수명 : 매개변수타입 ...)
for ~ in
구문 이용하면 입력된 모든 인자값을 순서대로 읽을 수 있다. import Foundation
func add(numbers: Int...){
var sum: Int = 0
for num in numbers{
sum += num
}
print(sum)
}
add(numbers:1,3,4,5,6,7,7)
강의자료 : [Smile Han 유튜브 강의 내용 정리] & [꼼꼼한 재은씨의 Swift: 문법편]