복붙노트

[SCALA] 나는 스칼라에 어떤 문자를 생략 할 수 있습니다?

SCALA

나는 스칼라에 어떤 문자를 생략 할 수 있습니다?

스칼라에서, 왜 다음에 (대신 T.m (0)의) T의 m 0 점 및 괄호를 생략 할 수 있습니다?

scala> object T { def m(i:Int) = 0 == i }
defined module T

scala> T m 0
res19: Boolean = true

그런데 왜 난 다음에 N (0)에 괄호를 생략 할 수없는 이유는 무엇입니까?

scala> def n(i:Int) = 0 == i
n: (Int)Boolean

scala> n 0
<console>:1: error: ';' expected but integer literal found.
       n 0
         ^

해결법

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

    1.전자의 예에서 T m은 0, "연산자 표기법」의 일례이다. 스칼라 연산자 표기법, 프리픽스 (단항 불림), 중위 및 포스트 픽스의 세 가지 유형이있다. 의 여기 행동 세 가지의 예를 보자 :

    전자의 예에서 T m은 0, "연산자 표기법」의 일례이다. 스칼라 연산자 표기법, 프리픽스 (단항 불림), 중위 및 포스트 픽스의 세 가지 유형이있다. 의 여기 행동 세 가지의 예를 보자 :

    class MyByte(val n : Int) {
      require(n >= 0 && n <= 255)
      def unary_! = new MyByte(n ^ 0xff)
      def +(m : MyByte) = new MyByte(n + m.n)
      def bits = (math.log(n) / math.log(2) + 1).toInt
      override def toString = "0" * (8 - bits) + n.toBinaryString
    }
    

    여기에 사용 중입니다 :

    scala> val a = new MyByte(5)
    a: MyByte = 00000101
    
    scala> val b = new MyByte(10)
    b: MyByte = 00001010
    
    scala> ! a  // Prefix/Unary
    res58: MyByte = 11111010
    
    scala> a + b  // Infix
    res59: MyByte = 00001111
    
    scala> b bits  // Postfix
    res60: Int = 4
    

    !와 + - ~, : 후위 표기법을 제한하는 이야기가 있지만 중위와 후위 표기법, 유효한 스칼라 식별자를 허용하지만, 네 개의 식별자가 접두어로 사용할 수 있습니다.

    지금, 당신은 "m 0"스칼라 폐기 유효한 하나 없다는 이유로, 단항 연산자 인을하려고 할 때 (~,! -와 +). 이 함수가 아닌 방법이며, 모든 기능은 객체 - 그것은 "m"는 유효한 개체임을 발견한다.

    "0"은 유효 스칼라 식별자가 아니기 때문에, 그것은 중위 나 후위 조작도 할 수 없다. 따라서 스칼라는 예상 불평 ";" "M"과 "0"- 어떤이 (거의) 유효한 표현을 분리하는 것입니다. 당신이 그것을 삽입 한 경우, 다음은 그 실패, 그 m 중 하나를 인수를 필요로 불평, 또는 것, a는 "_"부분적으로 적용되는 기능으로 전원을 켭니다.

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

    2.난 당신이 왼쪽에 명시 적으로 객체를 가지고 때 운영자 구문 스타일에만 작동 생각합니다. 구문은 당신이 "피연산자 연산자 피연산자"자연적인 방법으로 스타일 작업을 표현할 수 있도록하기위한 것입니다.

    난 당신이 왼쪽에 명시 적으로 객체를 가지고 때 운영자 구문 스타일에만 작동 생각합니다. 구문은 당신이 "피연산자 연산자 피연산자"자연적인 방법으로 스타일 작업을 표현할 수 있도록하기위한 것입니다.

  3. from https://stackoverflow.com/questions/1006967/which-characters-can-i-omit-in-scala by cc-by-sa and MIT license