[SCALA] 스칼라 문자 식별자에 대한 설명이 필요 (역 따옴표)
SCALA스칼라 문자 식별자에 대한 설명이 필요 (역 따옴표)
스칼라 2 판에서 프로그래밍을 읽고 난이 건너 온 :
문자 식별자 "아이디어는 역 따옴표 사이의 식별자로 런타임에 의해 허용있어 임의의 문자열을 넣을 수 있다는 것입니다"
내가 이것을 사용하는 것이 왜 나는 완전히 확실하지 않다? 이 책은 자바의 스레드 클래스의 정적 수율 방법을 액세스하는 사용 사례를했다.
나는 역 따옴표와 수율을 사용하는 경우 그래서 스칼라 때문에, 수율은, 예비 단어
Thread.`yield`()
그것은 스칼라의 수율을 무시하고 나를 대신 자바의 스레드 클래스의 방법 수율에 액세스 할 것인가?
사전에 감사합니다.
해결법
-
==============================
1.바로 그거죠. 역 따옴표를 사용하면 더 많거나 적은 필드 식별자에 어떤 이름을 지정할 수 있습니다. 사실, 당신도 말할 수있다
바로 그거죠. 역 따옴표를 사용하면 더 많거나 적은 필드 식별자에 어떤 이름을 지정할 수 있습니다. 사실, 당신도 말할 수있다
val ` ` = 0
어떤 이름을 가진 변수 (공백의 한 문자)를 정의합니다.
식별자의 문자 적 정의는 두 개의 경우에 유용합니다. 첫 번째 경우가 스칼라에서 같은 이름의 예약어는 이미 당신이 그것에 대해 걱정하지 않는 자바 라이브러리를 사용해야 할 때, (물론, 왜해야한다).
다른 사용 사례의 경우 문이 함께 제공됩니다. 협약의 소문자 이름은 대문자 이름 외측 범위 식별자를 참조하는 반면, 변수에 일치하는 참조이다. 그래서,
val A = "a" val b = "b" "a" match { case b => println("b") case A => println("A") }
인쇄 "b"를 (컴파일러가 충분히 벙어리 인 경우에 경우 A는 연결할 수없는 말을 실패하지). 당신이 원래 정의 발 B를 참조 할 경우, 당신은 마커로 역 따옴표를 사용해야합니다.
"a" match { case `b` => println("b") case A => println("A") }
어떤 "A"를 인쇄합니다.
꺾쇠 괄호이 최근 질문 방식의 고급 사용하는 경우가 있습니다 추가 (<>)를 역 따옴표가 (그 자체에 약간의 '마법'구문을 사용합니다) 세터 방법에 대한 코드를 소화에 컴파일러를 얻기 위해 필요했던 곳.
-
==============================
2.그것은 나를 AKKA의 문서에서 아래의 코드를 이해하는 데 도움이 당신에게 @Debilski 감사합니다
그것은 나를 AKKA의 문서에서 아래의 코드를 이해하는 데 도움이 당신에게 @Debilski 감사합니다
class WatchActor extends Actor { val child = context.actorOf(Props.empty, "child") ... def receive = { ... case Terminated(`child`) ⇒ ... } }
경우 :
case Terminated(`child`)
ActorRef 필드 종료 유형의 메시지와 일치하는 것은 이전에 정의 된 아이 같다.
이 문장으로 :
case Terminated(c)
우리는 C에 매핑 ActorRef의 참조 모든 종료 메시지를 일치합니다.
from https://stackoverflow.com/questions/6576594/need-clarification-on-scala-literal-identifiers-backticks by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] SparkSQL 어떻게 사용자 정의 함수에서 null 값을 처리하는 방법? (0) | 2019.10.31 |
---|---|
[SCALA] 어떻게 중복 된 열은 후 가입 피하기 위해? (0) | 2019.10.31 |
[SCALA] 스파크에서 편평 행 (0) | 2019.10.31 |
[SCALA] 이해를 위해 스칼라에 불일치를 입력 (0) | 2019.10.31 |
[SCALA] 어떻게 경우 클래스 동반자에 적용 오버라이드 (override) (0) | 2019.10.31 |