는 지금까지 내가 이해, 스칼라스칼라 문자열 형식 유추는
String
is an alias forjava.lang.String
등은 here을 설명하고, Predef.scala에서 볼 수있다 :
type String = java.lang.String
그래서 본질적으로 동일 함 .
그러나하게 IntelliJ IDEA 2017년 2월 5일에, 아래의 코드는 오류 발생 : 여기
trait PerceptualHash {
def calc[A](bi: BufferedImage): A
}
sealed trait BinaryStringPerceptualHash extends PerceptualHash {
override def calc[String](bi: BufferedImage): String
}
private object GeneralBinaryStringPerceptualHash extends BinaryStringPerceptualHash {
def calc[String](bi: BufferedImage): String = "0"
}
을 "0"
예상 타입에 맞지 않는 java.lang.String 타입의 발현 "메시지가 강조됩니다 문자열 ". 내가 지금처럼 "0"
을 변경하는 경우
는하지만 :
def calc[String](bi: BufferedImage): String = new String("0")
는 내가 그런 오류 메시지가 표시되지 않습니다.
무슨 일 이니? 예상되는 동작입니까? 그렇다면 왜 잘못된 것입니까? 아니면 Intellij IDEA의 형식 유추 버그입니까?
정말로 내가 원하는 것은 무엇입니까, 감사합니다. 그리고'BinaryStringPerceptualHash'에서'calc'를 무시하는 쓸데없는 것에 대한 여러분의 의견은 저의 마음을 불어 넣습니다 :-) 그런 식의 매개 변수화가 있습니다. – parazs
나는'BinaryStringPerceptualHash' 자체가 1) 공유 코드를 가지고 있지 않거나 2) 일부 PerceptualHash가'BinaryStringPerceptualHash'인지 테스트 할 필요가 없다면 특별히 유용하지 않다고 덧붙이겠다. –
당신은 @AlexeyRomanov가 옳았습니다. 나는 BinaryStringPerceptualHash를 구현으로 유지하고 그것을 확장하는 클래스/객체를 생성 할 것입니다. – parazs