(Int) => String)
의 유도를 구현하고이 같은
toString
메서드를 재정의하고
이 Function1.toString
(Scala IDE와 동일). 그리고 인 IntelliJ도 (스칼라 IDE는이 경고를 표시하지 않습니다) 빈 괄호를 나타내는 다음과 같은 경고로 인해 빈 괄호를 포함하여 Function1.toString
선언에 toString
방법에 추가해야합니다 보여줍니다괄호
빈 괄호 스칼라 방법은 매개 변수가
로 오버라이드 (override)메서드에 측면 효과가있는 경우 괄호를 포함하는 것이 좋습니다. Liskov 대체 원칙에 따라 재정의 메서드는 비공개이므로 무시 메서드는 부작용이있는 메서드로 선언 된 이어야합니다. 스칼라 프로그래밍을 참조하십시오 * 5.3 연산자는 스칼라 패키지 I은 다음 ScalaDoc에 가서 Function1 (source를) 확인 방법
, Function2 (source)와 PartialFunction (source가) 있습니다. 2.11.2의 소스 코드에서 Function1
및 Function2
은 각각 toString
메서드를 재정의하며 빈 괄호 (PartialFunction
은 Function1
의 재정의 만 사용함)를 포함합니다. 따라서 Function1
과 Function2
은 toString
메서드에 대해 String
리터럴을 선언했기 때문에이 두 클래스 파일의 소스 코드에 괄호가 포함 된 이유는 알 수 없습니다.
toString
메서드에서 괄호 사용을 정당화하는 어떤 분명한 사실이 있습니까? 또는 IntelliJ 경고가 잘못 되었습니까? IntelliJ 경고가 정확하다면 왜 Scala IDE에 IntelliJ와 같은 경고가 표시되지 않습니까?
Tysvm. 귀하의 답변을 세 번 읽었으며 또한 Google 스레드를 읽었습니다. 나는 아직도 확신을 갖고 결론을 이끌어 낼 수 없다. 그래서 짧은 대답입니까? toString 메서드를 재정의 할 때 괄호가 필요하지 않으므로 IntelliJ의 경고가 잘못되었습니다. 만일 그렇다면, 나는 당신의 대답을 요약 (또는 tl; dr)으로 맨 위에 올리면 나중에 받아 들일 것입니다. 그래서 미래의 독자들은 더 깊은 것을 읽지 않고도 결론을 빨리 내릴 수 있습니다. 그렇지 않다면 제 마지막 단락의 세 가지 질문에 대한 답을 이해하도록 도와주십시오. – chaotic3quilibrium
그리고 그 답이 괄호를 생략 할 수 있다면, 왜 그들이 scala.Function1과 scala.Function2 (특히 문자열 리터럴이 할당 되었기 때문에)를 벗어나지 않았는지를 알 수 있습니까? – chaotic3quilibrium
나는 더 강한 단어를 사용했다. –