[SCALA] 어떻게 스칼라 방법 정적을해야합니까?
SCALA어떻게 스칼라 방법 정적을해야합니까?
나는 클래스가
class MyClass {
def apply(myRDD: RDD[String]) {
val rdd2 = myRDD.map(myString => {
// do String manipulation
}
}
}
object MyClass {
}
나는 하나 개의 작업 ( "문자열 조작을하지"라는 영역)을 수행하는 코드 블록을 가지고 있기 때문에, 나는 그것을 자신의 방법으로 그것을 파괴해야한다고 생각. 이 방법은 클래스의 상태를 변경하지 않기 때문에, 나는 그것을 정적 방법해야한다 생각했다.
어떻게 그렇게 할 수 있습니까?
난 그냥 동반자 개체 내부의 방법을 팝업 할 수 있으며이 같은 정적 클래스로 사용할 수있을 것이라고 생각했다 :
object MyClass {
def doStringManipulation(myString: String) = {
// do String manipulation
}
}
내가 발 rdd2 = myRDD.map하려고 할 때 (mystring에 => {doStringManipulation (mystring에)}), 스칼라는 방법을 인식하지 않고 그것을 호출하기 위해 MyClass.doStringManipulation (mystring에)을 할 저를 강제로.
내가 무엇을 잘못하고 있지?
해결법
-
==============================
1.당신이 당신의 질문에 정의 된 바와 같이, 클래스 또는 싱글 톤의 인스턴스이라고해도, 모든 메소드가 객체에 대해 정의됩니다 스칼라에서 정적 방법이 없습니다.
당신이 당신의 질문에 정의 된 바와 같이, 클래스 또는 싱글 톤의 인스턴스이라고해도, 모든 메소드가 객체에 대해 정의됩니다 스칼라에서 정적 방법이 없습니다.
올바르게 지적한 바와 같이, 클래스와 같은 컴파일 단위에서 같은 방법으로라는 개체를함으로써 당신은 객체 두 사람이 서로 개인 필드와 메소드에 액세스 할 수 있다는 것을 의미 클래스의 동반자 만들지 만,이 액세스중인 오브젝트하는 지정하지 않고 그들이 사용할 수 있도록 않습니다.
당신이, 당신은 단지 '클래스의 범위를 메서드를 가져올 수 있습니다 의미가 생각한다면, 언급 (MyClass.doStringManipulation (mystring에)) 또는 당신이 중 하나를 긴 형식을 사용하고 싶은로서 다음과 같습니다 :
import MyClass.doStringManipulation class MyClass { def apply(myRDD: RDD[String]): Unit = { val rdd2 = myRDD.map(doStringManipulation) } } object MyClass { private def doStringManipulation(myString: String): String = { ??? } }
보조 노트로, MyClass.apply 방법을 위해, 당신은 미래에 사라질 예정되어있는 표기법을 사용 :
// this is a shorthand for a method that returns `Unit` but is going to disappear def method(parameter: Type) { // does things } // this means the same, but it's going to stay // the `=` is enough, even without the explicit return type // unless, that is, you want to force the method to discard the last value and return `Unit` def method(parameter: Type): Unit = { // does things }
-
==============================
2.당신은 스칼라의 조언을 따라야합니다.
당신은 스칼라의 조언을 따라야합니다.
브로 rdd2 = myRDD.map (MyClass.doStringManipulation)
from https://stackoverflow.com/questions/48178192/how-do-i-make-my-scala-method-static by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 어떻게 스칼라에서 일반적인 방법으로 형질의 인스턴스를 만들려면 어떻게해야합니까? (0) | 2019.11.23 |
---|---|
[SCALA] ClassTag 기초하여 패턴 매칭이 실패 프리미티브 (0) | 2019.11.23 |
[SCALA] 어레이 스파크 SQL의 요소 범위를 선택 (0) | 2019.11.23 |
[SCALA] 어떻게 여러 개의 입력과 implicits는 스칼라에서 사용할 수 있습니까? (0) | 2019.11.23 |
[SCALA] 어떻게 스파크 많은 파티션으로 마루 파일을 분할하려면? (0) | 2019.11.23 |