[SCALA] java.lang.String의 대 스칼라 문자열 - 형식 유추
SCALAjava.lang.String의 대 스칼라 문자열 - 형식 유추
REPL에서 나는 함수를 정의합니다. 반환 형식을합니다.
scala> def next(i: List[String]) = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[java.lang.String]
그리고 문자열로 반환 유형을 지정하는 경우
scala> def next(i: List[String]): List[String] = i.map {"0" + _} ::: i.reverse.map {"1" + _}
next: (i: List[String])List[String]
왜 차이점은 무엇입니까? 내가 문자열 java.lang.String의 단지 래퍼 슈퍼 추측 그래서 나는 또한, [모든] 목록으로 반환 유형을 지정할 수 있습니다. 이것은 어떤 실제적인 영향을 미칠 것인가 아니면 안전하게 반환 유형을 지정할 수 없습니다?
해결법
-
==============================
1.이것은 아주 좋은 질문입니다! 첫째, 내가 안전하게 반환 유형을 지정할 수 있습니다 당신을 확신 할 수 있습니다.
이것은 아주 좋은 질문입니다! 첫째, 내가 안전하게 반환 유형을 지정할 수 있습니다 당신을 확신 할 수 있습니다.
추론 왼쪽 때 ... 예, 스칼라 대신 문자열로, java.lang.String의 추론에 지금의 모습을 보자. 당신이 ScalaDoc에서 "문자열"을 보면 그래서, 당신은 하나 스칼라 클래스없는 것처럼 보입니다 아무것도를 찾을 수 없습니다. 음,하지만, 어딘가에서 온있다.
의는 기본적으로 어떤 스칼라 수입을 생각해 보자. 당신은 REPL에 스스로 찾을 수 있습니다 :
scala> :imports 1) import java.lang._ (155 types, 160 terms) 2) import scala._ (801 types, 809 terms) 3) import scala.Predef._ (16 types, 167 terms, 96 are implicit)
실제로, 문자열이있는 java.lang에서 찾을 수 있습니다, 그리고 - 처음 두 패키지입니다! 다음, 그것이인가? 해당 패키지에서 다른 뭔가를 인스턴스화하여하자 검사 :
scala> val s: StringBuffer = new StringBuffer s: java.lang.StringBuffer = scala> val s: String = new String s: String = ""
그래서, 그게 될 것 같지 않습니다. 지금, 그것은 스칼라 패키지 내부에 수 없습니다, 또는 ScalaDoc에 찾는 경우가 발견되었을 것입니다. 그래서하자 scala.Predef 내부 모습, 그리고 거기입니다!
type String = String
즉, 문자열 (이전에 가져온) java.lang.String의 별칭이다. 즉, 순환 참조처럼 보이지만, 그러나 당신이 소스를 선택하면, 당신은이 전체 경로로 정의 볼 수 있습니다 :
type String = java.lang.String
다음으로, 당신은 왜 질문 할 수 있습니다? 글쎄, 난 어떤 생각을 가지고 있지 않지만, 나는 그것이 JVM에 같은 중요한 클래스는 좀 덜 의존하게하는 것입니다 생각한다.
from https://stackoverflow.com/questions/6559938/scala-string-vs-java-lang-string-type-inference by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 소스가 Source.actorRef에서 만든 akka 스트림의 기본 ActorRef 액세스 (0) | 2019.11.09 |
---|---|
[SCALA] 앞으로의 참조 - 왜이 코드를 컴파일합니까? (0) | 2019.11.09 |
[SCALA] 스칼라 튜플에 기능 콤비를 사용? (0) | 2019.11.09 |
[SCALA] 스파크 : RDD 모든 가능한 조합의 생산 RDD [(X, X)] [X] (0) | 2019.11.09 |
[SCALA] '이' ''와 어떤 유형 / 차이 명시 자기 참조 (0) | 2019.11.09 |