[SCALA] 스칼라에서, 할당 연산자 "="메소드 호출은?
SCALA스칼라에서, 할당 연산자 "="메소드 호출은?
스칼라 책에 관해서는, "스칼라 프로그래밍"-
스칼라는 순수한 형태의 객체 지향 언어이다 : 모든 값은 객체이며 모든 작업은 메소드 호출이다. 예를 들어, 스칼라 1 + 2, 당신은 실제로 +라는 이름의 클래스 지능에 정의 된 메소드를 호출하는 말할 때.
그런 의미에서, 할당 작업에 대한 어떤 일이 "="연산자를 사용하고 계십니까? 그 또한 방법인가? 다음은 모든 클래스에서 상속해야하는 모든 클래스 나 일반적인 슈퍼 클래스 (예를 들어, java.lang.Object 상위?)에 존재하기 때문에, 가능성이 보인다. 아니면 모든 작업이 정말 스칼라에서 메서드 호출 있다는 것입니다?
해결법
-
==============================
1.아니. 할당 연산자 (=) 예약어이다. 또한 다음은 다음과 같습니다 :
아니. 할당 연산자 (=) 예약어이다. 또한 다음은 다음과 같습니다 :
보다 포괄적 인 목록은 1.1 § 참조하십시오. = 대한 일부 자세한 내용은 § 6.12.4에 설명되어 있습니다.
그래서 네는 메소드 호출되지 않습니다.
-
==============================
2.Jatin의 대답에 약간의 추가. 이 =이 메서드 호출로 간주 될 수있는 한 경우이지만, 실제로는 단지 문법 설탕입니다. 추악한 생명을 바르 스칼라의 OO 부분에서는 다음을 작성할 수 있습니다 :
Jatin의 대답에 약간의 추가. 이 =이 메서드 호출로 간주 될 수있는 한 경우이지만, 실제로는 단지 문법 설탕입니다. 추악한 생명을 바르 스칼라의 OO 부분에서는 다음을 작성할 수 있습니다 :
class Test { private var x0: Int = 0 def x = x0 def x_=(a: Int) = x0 = a }
그럼 당신은 X 새로운 int 치의을 할당 할 수 있습니다 :
scala> val t = new Test t: Test = Test@4166d6d3 scala> t.x = 1 t.x: Int = 1
마지막 줄 t.x _ = 1로 desugared한다. 나는 그것이 = 그런 말을하는 것이 가능 메소드 호출이다, 문법 설탕을 고려,이 경우 생각합니다.
-
==============================
3.다른 답변은 표준 스칼라에 대한 올바른 있지만,이 스칼라 - 가상화 된 곳이라는 변종이다 = 및 다른 제어 구조는 메소드 호출이다.
다른 답변은 표준 스칼라에 대한 올바른 있지만,이 스칼라 - 가상화 된 곳이라는 변종이다 = 및 다른 제어 구조는 메소드 호출이다.
from https://stackoverflow.com/questions/19086851/in-scala-is-assignment-operator-a-method-call by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 dropWhile 당량 (0) | 2019.11.05 |
---|---|
[SCALA] 스칼라 속도를 컴파일 대 속도를 컴파일 자바 (0) | 2019.11.05 |
[SCALA] 스파크 DataFrame를 사용하여 그룹 후 모든 그룹의을 TopN를 얻을 수 (0) | 2019.11.05 |
[SCALA] 스파크에서 DataFrame 평가를 강제하는 방법 (0) | 2019.11.05 |
[SCALA] 때 스칼라 중위 표기법에 괄호를 사용하는 (0) | 2019.11.05 |