8

알고있는 한, List 또는 Seq 같은 형체는 언어 자체가 아닌 스칼라 표준 라이브러리에서 구현됩니다.스칼라 가변 함수와 Seq

내가하지만, 이해하지 않는 한 가지가있다 : 하나는 내부적으로 하나가 args에 대한 액세스 권한을 가지고 있으며, 그것이 Seq 될 것

def foo(args: String*) = ... 

과 같은 가변 기능에 대한 구문이 있습니다.
  • Seq

    언어의 일부로 표시 할만큼 특별한 데이터 구조를 고려, 또는
  • 여기 * 표기법은보다 일반적인의 특별한 경우입니다 :

    그것은 여부 나에게 분명하지 않다 구체적인 데이터 구조 인터페이스에 대한 참조를 피하기 위해 관리하는 구문.

어떤 사람이 올바른 침입인지 압니까?

답변

12

사실 언어와 라이브러리 사이에는 다소 '흐림'이 있습니다.

매개 변수 섹션의 마지막 값 매개 변수가 "*"접미사로 할 수있다, 예를 들면 : §4.6.2 반복 매개 변수의 스칼라 언어 사양 V2.9 상태 (..., x : T *). 메서드 내에서 이러한 반복 매개 변수의 형식은 시퀀스 형식 scala.Seq[T]입니다. 당신이 반복 인수를 사용할 때

는 그래서, scala.Seq은 (는 표준 라이브러리의 일부로서, 경우가해야하는) 런타임에 사용할 수 있음을 가정한다.

1

처음 생각합니다. 실제로 언어의 일부는 아니지만 언어가 요구하는 두 가지 유형이 있습니다. Seq과 함께 하나를 찾았습니다.