문제

다음을 수행하는 방법을 알아 내려고 머리를 찢어 버리고 있습니다.

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, o :: List(os:_*)) )
}

메소드를 o 그리고 os Seq 갈라져. 기본적으로 단일 객체 매개 변수로 호출 된 형식 방법으로 끝납니다. List). 시도 :

def foo(msf: String, o: Any, os: Any*) = {
    println( String.format(msf, (o :: List(os:_*))).toArray )
}

유형 오류를 제공합니다.

발견 : 배열 [Any

필수 seq [java.lang.object

캐스팅을 시도했는데, 이는 컴파일하지만 첫 번째 예와 거의 같은 이유로 실패합니다. 내가 시도 할 때

println(String.format(msg, (o :: List(os:_*)) :_* ))

이것은 암시 적 변환 모호성으로 컴파일하지 못한다 (any2ArrowAssoc 그리고 any2stringadd)

도움이 되었습니까?

해결책

def foo(msf: String, o: AnyRef, os: AnyRef*) = 
  println( String.format(msf, (o :: os.toList).toArray : _* ))

다른 팁

def foo(msf: String, o: AnyRef, os: AnyRef*) =
  println( String.format(msf, o :: os.toList : _* ) )

또는

def foo(msf: String, o: AnyRef, os: AnyRef*) =
      println( msf format (o :: os.toList : _* ) )

나는 로케일* 지원이 없지만 후자를 더 선호합니다.

  • Scala 2.8은 Richstring의 형식을 가진 로케일 지원을 제공합니다.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top