2017-12-30 11 views
1

유형이 Enum 인 varargs 매개 변수가있는 경우이 매개 변수의 기본값을 설정할 수 있습니까?스칼라에서 varargs 매개 변수의 기본값을 설정하는 방법은 무엇입니까?

def functionName(parameter: Enum* = defaultValue) 

위의 defaultValue은 어떻게해야합니까?

+0

모두 감사를 인쇄, 나는 일이 주위 알고있다. 난 그냥 기본적 으로이 작업을 수행 할 수 있는지 알고 싶습니다. 문제 해결됨. – kula0826

답변

0

당신은 할 것 :

와 매개 변수 섹션 1 '*'- 매개 변수는 0 인수를 전달하기에도 유효 할 수 없기 때문에

+2

이 문장의 출처를 추가하십시오. –

+1

[This] (https://github.com/scala/scala/blob/2.13.x/src/compiler/scala/tools/nsc/typechecker/ContextErrors.scala#L286)는 신뢰할 수있는 소스처럼 보입니다 :-). –

0

기본 인수를 할 수 없습니다 varargs 파라미터. 그러나 메서드 본문에 간단히 체크를 할 수 있습니다.

def functionName(parameter: Enum*) = { 
    val parameter0 = if (parameter.nonEmpty) parameter else Seq(defaultValue) 
    ??? 
} 
1

이것은 이미 언급 했으므로 직접 해킹 할 수 없으므로 해킹해야합니다. 이것은 또한 이상적인 솔루션은 아니지만이 다른 선택보다 더 해킹 같은 수 있습니다

def functionName(): Int = functionName(1, 2, 3) 

def functionName(parameter: Int*): Int = parameter.sum 

println(functionName()) 분명히 6

+0

나를 위해 컴파일되지 않습니다. – jwvh

+0

@jwvh, 어떤 컴파일러를 사용합니까? 스칼라 2.11.8과 2.12.4를 모두 사용하여 잘 작동하는 것 같습니다. – SergGr

+0

맞습니다. REPL 및 IntelliJ 워크 시트 시도 모두 실패하지만 파일에서 컴파일 할 때 아무런 문제가 없습니다. 그림을 이동. – jwvh

관련 문제