복붙노트

[SCALA] 구문 설탕 : _ * 방법 매개 변수로 서열을 치료

SCALA

구문 설탕 : _ * 방법 매개 변수로 서열을 치료

난 그냥 웹 곳이 구조를 발견 :

val list = List(someCollection: _*)

_ * 무엇을 의미합니까? 이것은 몇 가지 메소드 호출 구문 설탕인가? 어떤 제약 조건 내 사용자 정의 클래스는이 구문 설탕을 활용할 수 있도록 만족해야합니까?

해결법

  1. ==============================

    1.일반적으로, : 표기법은 일부 특정 유형으로 값을 확인하기 위해 컴파일러를 강제 형 귀속에 사용됩니다. 이 주조와 같은 꽤있다.

    일반적으로, : 표기법은 일부 특정 유형으로 값을 확인하기 위해 컴파일러를 강제 형 귀속에 사용됩니다. 이 주조와 같은 꽤있다.

    val b = 1 : Byte
    val f = 1 : Float
    val d = 1 : Double
    

    이 경우에, 당신은 특별한 변수 인수 유형을 돌리는 것입니다. 이것은 가변 인자 매개 변수를 선언 서열 [T]를 서브 클래스 어떤 유형의 변수에 사용할 수있는 사용 별표 기호를 반영한다 :

    def f(args: String*) = ... //varargs parameter, use as an Array[String]
    val list = List("a", "b", "c")
    f(list : _*)
    
  2. ==============================

    2.즉 배열을 폭발 스칼라 구문입니다. 일부 기능은 가변 수의 인수를 취하고 추가 할 필요가 배열 전달 : 배열 인수 _ *.

    즉 배열을 폭발 스칼라 구문입니다. 일부 기능은 가변 수의 인수를 취하고 추가 할 필요가 배열 전달 : 배열 인수 _ *.

  3. ==============================

    3.인수 변수 (수) * 사용하여 정의된다. 예를 들어,

    인수 변수 (수) * 사용하여 정의된다. 예를 들어,

    데프 단어 수 (단어 : 문자열 *) =에 println (words.size)

    단어 수는 매개 변수로 문자열을 기대

    scala> wordcount("I")
    1
    

    하지만, 입력 파라미터로서 이상의 문자열을 수락 (_ * 타입 귀속 대한 필요)

    scala> val wordList = List("I", "love", "Scala")
    scala> wordcount(wordList: _*)
    3
    
  4. from https://stackoverflow.com/questions/4176440/syntax-sugar-for-treating-seq-as-method-parameters by cc-by-sa and MIT license