[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.전자의 예에서 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.난 당신이 왼쪽에 명시 적으로 객체를 가지고 때 운영자 구문 스타일에만 작동 생각합니다. 구문은 당신이 "피연산자 연산자 피연산자"자연적인 방법으로 스타일 작업을 표현할 수 있도록하기위한 것입니다.
난 당신이 왼쪽에 명시 적으로 객체를 가지고 때 운영자 구문 스타일에만 작동 생각합니다. 구문은 당신이 "피연산자 연산자 피연산자"자연적인 방법으로 스타일 작업을 표현할 수 있도록하기위한 것입니다.
from https://stackoverflow.com/questions/1006967/which-characters-can-i-omit-in-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 연속 동일한 요소를 그룹화하는 스칼라 목록 기능 (0) | 2019.11.21 |
---|---|
[SCALA] 이유 필터 스칼라의 for 루프 패턴 매칭에 대해 정의 될 수 있는가? (0) | 2019.11.21 |
[SCALA] 슈퍼 클래스와 케이스 클래스 복사 '방법' (0) | 2019.11.20 |
[SCALA] 스칼라 : 지능 또는 없음으로 변환 문자열 (0) | 2019.11.20 |
[SCALA] 이 스칼라 변수로 튜플 할당을 할 수 있습니까? [복제] (0) | 2019.11.20 |