문제
다음을 수행하는 방법을 알아 내려고 머리를 찢어 버리고 있습니다.
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의 형식을 가진 로케일 지원을 제공합니다.
제휴하지 않습니다 StackOverflow