복붙노트

[SCALA] 스칼라 @ 연산자

SCALA

스칼라 @ 연산자

스칼라의 @ 연산자는 무엇입니까?

예를 들어, 스칼라의 블로그 게시물 공식 언어 처리에서, 파트 2는이 같은 뭔가가있다

case x @ Some(Nil) => x

해결법

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

    1.그것은 하나의 변수에 일치하는 패턴을 결합 할 수 있습니다. 예를 들어, 다음 사항을 고려하십시오

    그것은 하나의 변수에 일치하는 패턴을 결합 할 수 있습니다. 예를 들어, 다음 사항을 고려하십시오

    val o: Option[Int] = Some(2)
    

    당신은 쉽게 내용을 추출 할 수 있습니다 :

    o match {
      case Some(x) => println(x)
      case None =>
    }
    

    그러나 당신이하지 일부의 내용을하지만, 옵션 자체를 원한 경우? 즉,이 달성 될 것입니다 :

    o match {
      case x @ Some(_) => println(x)
      case None =>
    }
    

    그 @이 아니라 일치의 최상위 레벨에서, 모든 수준에서 사용할 수 있습니다.

  2. ==============================

    2.@ 성공적으로 일치하는 패턴 또는 서브 패턴에 이름을 결합 할 수 있습니다. 패턴들은 패턴 매칭에 사용될 수있는 <의 좌측 - 지능형 속하고있는 destructuring의 assigments.

    @ 성공적으로 일치하는 패턴 또는 서브 패턴에 이름을 결합 할 수 있습니다. 패턴들은 패턴 매칭에 사용될 수있는 <의 좌측 - 지능형 속하고있는 destructuring의 assigments.

    scala> val d@(c@Some(a), Some(b)) = (Some(1), Some(2))
    d: (Some[Int], Some[Int]) = (Some(1),Some(2))
    c: Some[Int] = Some(1)
    a: Int = 1
    b: Int = 2
    
    scala> (Some(1), Some(2)) match { case d@(c@Some(a), Some(b)) => println(a, b, c, d) }
    (1,2,Some(1),(Some(1),Some(2)))
    
    scala> for (x@Some(y) <- Seq(None, Some(1))) println(x, y)
    (Some(1),1)
    
    scala> val List(x, xs @ _*) = List(1, 2, 3) 
    x: Int = 1
    xs: Seq[Int] = List(2, 3)
    
  3. ==============================

    3.당신은 패턴의 최상위을 일치시킬 수 있습니다. 예:

    당신은 패턴의 최상위을 일치시킬 수 있습니다. 예:

    case x @ "three" => assert(x.equals("three"))
    case x @ Some("three") => assert(x.get.equals("three")))
    case x @ List("one", "two", "three") => for (element <- x) { println(element) }
    
  4. ==============================

    4.변수 @ 패턴과 일치하는 패턴은 패턴이 일치하는 경우는 패턴 매칭 값 변수 바인딩 할 때. 이 경우, 즉, x의 값은 그 경우의 일부 절 (닐) 될 것을 의미한다.

    변수 @ 패턴과 일치하는 패턴은 패턴이 일치하는 경우는 패턴 매칭 값 변수 바인딩 할 때. 이 경우, 즉, x의 값은 그 경우의 일부 절 (닐) 될 것을 의미한다.

  5. ==============================

    5.이는 일치하는 패턴으로 x의 값을 설정한다. (호출에 println을에서 당신이 결정할 수로) 귀하의 예제에서 x 따라서 일부 (무기 호) 것

    이는 일치하는 패턴으로 x의 값을 설정한다. (호출에 println을에서 당신이 결정할 수로) 귀하의 예제에서 x 따라서 일부 (무기 호) 것

  6. from https://stackoverflow.com/questions/2359014/scala-operator by cc-by-sa and MIT license