fn sum(*values: Int) -> Int: var sum: Int = 0 for value in values: sum = sum + value return sumfn main(): var value_case_1 = sum(10) print(sum(1, 2, 3)) # -> 6 print(sum(10, 20, 30, 40)) # -> 100 print(value_case_1) # -> 10 return
fn add(x: Int, y: Int) -> Int: return x + yfn add(x: String, y: String) -> String: return x + y
오버로딩
나온 김에 정리하고 갑시다.(원래 저는 자바를 먼저 사용했기에..)
같은 이름의 메서드를 여러 개 정의할 수 있게 해주는 기능인데,
JAVA</>
// 정수 두 개를 더하는 메서드 public int add(int a, int b) { return a + b; } // 실수 두 개를 더하는 메서드 public double add(double a, double b) { return a + b; } // 정수 세 개를 더하는 메서드 public int add(int a, int b, int c) { return a + b + c; }
자바에서는 이런 식으로 예시를 들 수 있습니다.
조건은
메서드 이름이 같아야 함
매개변수의 개수나 타입이 달라야 함
반환 타입은 오버로딩을 구분하는 기준이 되지 않음!
이렇게 되겠습니다.
MOJO</>
fn add(x: Int, y: Int) -> Int: return x + yfn add(x: Int, y: Int, z: Int) -> Int: return x + y + zfn add(x: Float32, y: Float32) -> Float32: return x + yfn add(x: String, y: String, delimiter: String) -> String: return x + delimiter + yfn main(): print(add(5, 3)) # 두 정수의 합: 8 print(add(1, 2, 3)) # 세 정수의 합: 6 print(add(3.14, 2.86)) # 두 실수의 합: 6.0 print(add("Hello", "World", " ")) # 구분자를 포함한 문자열 연결: "Hello World"