English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scala에는 메서드와 함수가 있으며, 의미적으로의 차이는 매우 작습니다. Scala 메서드는 클래스의 일부이며, 함수는 변수에 할당할 수 있는 객체입니다. 다시 말해, 클래스 내에서 정의된 함수는 메서드입니다.
Scala의 메서드는 Java와 유사합니다. 메서드는 클래스의 일부로 구성됩니다.
Scala의 함수는 완전한 객체이며, Scala의 함수는 Trait을 상속한 클래스의 객체입니다.
Scala에서는 val 문장은 함수를 정의할 수 있습니다.def 문장은 메서드를 정의합니다.
class Test{ def m(x: Int) = x + 3 val f = (x: Int) => x + 3 }
주의하세요:함수(function)와 메서드(method)는 번역에서 차이가 없습니다.
Scala 메서드 선언 형식은 다음과 같습니다:
def functionName([parameter list]): [return type]
equal sign (=)와 메서드 본체를 쓰지 않으면, 메서드는 암시적으로 선언됩니다.추상적(abstract)를 포함하여, 그 타입도 추상적인 타입입니다.
메서드 정의는 하나의 def 키워드로 시작하여, 선택적 매개변수 목록, 하나의 콜론 :, 메서드의 반환 타입, 하나의 등호 =, 마지막으로 메서드의 본체로 이어집니다.
Scala 메서드 정의 형식은 다음과 같습니다:
def functionName([parameter list]): [return type] = { function body return [expr] }
위 코드에서 return type Scala의 어떤 합법적인 데이터 타입도 될 수 있습니다. 매개변수 목록의 매개변수는 쉼표로 구분할 수 있습니다.
다음 메서드는 전달된 두 개의 매개변수를 더하여 합을 구합니다:
object add{ def addInt( a: Int, b: Int ) : Int = { var sum: Int = 0 sum = a + b return sum } }
메서드가 반환 값이 없을 경우, 반환할 수 있습니다. UnitJava와 유사하게 void예제는 다음과 같습니다:
object Hello{ def printMe(): Unit = { println("Hello, Scala!") } }
Scala는 다양한 메서드 호출 방식을 제공합니다:
다음은 메서드 호출의 표준 형식입니다:
functionName( 参数列表 )
메서드가 예제의 객체를 호출하면 java와 유사한 형식을 사용할 수 있습니다 (사용 . 호):
[instance.]functionName( 参数列表 )
위 예제는 메서드 정의와 호출의 예제를 보여줍니다:
object Test { def main(args: Array[String]) { println("반환 값: " + addInt(5,7}); } def addInt( a: Int, b: Int ) : Int = { var sum: Int = 0 sum = a + b return sum } }
위 코드를 실행하면 다음과 같은 출력 결과가 나타납니다:
$ scalac Test.scala $ scala Test 반환 값: 12
Scala는 함수형 언어이므로 함수는 Scala 언어의 핵심입니다. 다음과 같은 함수 개념은 Scala 프로그래밍을 더 잘 이해하는 데 도움이 됩니다:
함수 개념 설명 및 예제 | ||
---|---|---|
함수 전자 호출(Call-by-이름) | 지정된 함수 파라미터 이름 | |
함수 - 가변 파라미터 | 재귀 함수 | |
기본 파라미터 값 | 고차 함수 | |
내장 함수 | 익명 함수 | |
부분 적용 함수 | 함수 커리화(Function Currying) |