2012-11-16 1 views
25

scalac 명령 줄 인수 -Ywarn-value-discard을 내 빌드에 추가했습니다. 이는 코드에서 방금 발견 한 미묘한 버그가 있었기 때문입니다. 그러나 이제는 버그가 아닌 의도적 인 폐기에 관한 "폐기 된 비 단위 값"에 대한 경고가 표시됩니다. 어떻게 이러한 경고를 억제합니까?"폐기 된 비 - 단위 값"경고를 표시하지 않음

답변

34

명백히 단위 (즉, ())를 반환하여이 경고를 표시하지 않습니다. 즉,

def method1() = { 
    println("Hello") 
    "Bye" 
} 
def method2() { 
    method1() 
() // Explicitly return unit 
} 
+0

'method2'에서'method1'을 (를) 호출 할 때 _non-Unit value_을 (를) 버리지 마십시오? – botchniaque

+1

첫 번째 스 니펫은 경고를 트리거하는 경우 ('-Ywarn-value-discard'가 활성화 된 경우)를 나타내므로 실제로이 경우 비 단위 값 ('method1'의 반환 값) 'method2'에서'method1'을 호출 할 때 폐기됩니다. 두 번째 스 니펫은 명시 적으로 "unit"(즉'()')을 반환하여 경고를 제거합니다. –

8

this answer에 따르면, 당신은 또한 구문 val _을 사용할 수 있습니다

def method2(): Unit = { 
    val _ = method1() 
} 

을하지만 여부를이 이상 몇 가지 논쟁이있다 :

def method1() = { 
    println("Hello") 
    "Bye" 
} 
def method2() { 
    method1() // Returns "Bye", whihc is implicitly discarded 
} 

로 : 예으로이 차례 또는 @ Régis의 대답이 선호되는 스타일입니다.