[SCALA] 때 등호 스칼라 방법 선언에 서명을 사용 하는가?
SCALA때 등호 스칼라 방법 선언에 서명을 사용 하는가?
equals와 서명 :
object HelloWorld {
def main(args: Array[String]) = {
println("Hello!")
}
}
없이 등호 :
object HelloWorld {
def main(args: Array[String]) {
println("Hello!")
}
}
위의 프로그램은 모두 같은 방법으로 실행합니다. 내가 스칼라에서 좋아하지 않는 블로그 포스트 것들 나는 등호 누락 로그인 할 때 값을 반환하는 방법은 등호 사용해야합니다, 방법, (자바의 무효와 동일) 단위를 반환합니다 읽어 보시기 바랍니다. 그러나 값을 반환하지 않는 방법 중 하나의 방법을 쓸 수 있습니다.
등호 값을 반환하지 않는 스칼라 방법 로그인 사용하기위한 가장 좋은 방법은 무엇입니까?
해결법
-
==============================
1.사실 다니엘 꽤 강하게 동의하지 않는다. 나는 비와 동일한 구문을 사용해서는 안됩니다 생각합니다. 당신의 메소드가 API로 노출 실수로 잘못된 유형을 반환에 대한 걱정되는 경우, 명시 적 타입 주석을 추가 :
사실 다니엘 꽤 강하게 동의하지 않는다. 나는 비와 동일한 구문을 사용해서는 안됩니다 생각합니다. 당신의 메소드가 API로 노출 실수로 잘못된 유형을 반환에 대한 걱정되는 경우, 명시 적 타입 주석을 추가 :
object HelloWorld { def main(args: Array[String]): Unit = { println("Hello!") 123 } }
비와 동일한 구문은 짧아지고 "청소기"를 보일 수 있습니다,하지만 난 그냥 혼란의 가능성을 추가 생각합니다. 가끔 등호를 추가 잊어하고 단위를 반환 할 때 실제로 내 방법은 값을 반환 믿었습니다. 비 같거나 같지-와-추론 형 구문이 너무 시각적으로 비슷하기 때문에,이 문제를 그리워 쉽습니다.
그것은 나에게 조금 더 많은 작업 비용에도 불구하고 그들이 (즉, 노출 인터페이스) 문제 때, 나는 명시 적 유형의 주석을 선호합니다.
-
==============================
2.UPDATE : 스칼라 - 2.10로 서명 등호를 사용하는 것이 바람직하다. 올드 대답 :
UPDATE : 스칼라 - 2.10로 서명 등호를 사용하는 것이 바람직하다. 올드 대답 :
단위를 반환하는 방법은 항상 구문을 비 동일 사용해야합니다. 이것은 구현의 잠재적 인 실수가 API에 걸쳐 실시 피할 수 있습니다. 예를 들어, 실수로이 같은 일을 할 수 있었다 :
object HelloWorld { def main(args: Array[String]) = { println("Hello!") 123 } }
물론 사소한 예,하지만이 문제가 될 수있는 방법을 볼 수 있습니다. 마지막 표현 단위를 반환하지 않기 때문에,이 방법 자체가 단위가 아닌 다른 반환 유형을해야합니다. 이 공개 API에 노출되고, 길 아래에 다른 문제가 발생할 수 있습니다. 구문을 비는-동일로, 마지막 표현이 무엇인지는 중요하지 않습니다, 스칼라 단위로 반환 형식을 해결합니다.
또한 두 개의 문자 청소기입니다. 또한 비 동일 구문이 쉽게 읽을 조금 코드를 만드는 것이라고 생각하는 경향이있다 :-). 문제의 방법은 오히려 유용한 값보다 단위를 반환 더 분명하다.
관련 메모에서 추상 메소드에 대한 유사한 구문이 있습니다 :
trait Foo { def bar(s: String) }
방법 바는 서명 문자열 => 단위가 있습니다. 당신이 추상적 구성원의 유형 약어를 생략하면 스칼라는이 작업을 수행합니다. 다시 한번,이 깨끗하고, (내 생각) 쉽게 읽을.
-
==============================
3.당신은 등호 단위를 반환 정의를 제외하고 호출 선언에 서명을 사용해야합니다.
당신은 등호 단위를 반환 정의를 제외하고 호출 선언에 서명을 사용해야합니다.
후자의 경우, 당신은 등호 포기 수 있습니다. 이 구문은하지만, 사용되지 할 수 있으므로이를 피해야합니다. 등호 기호 사용 및 반환 유형이 항상 작동합니다 선언.
-
==============================
4.프로 시저 구문에 반대 방법에 대해서는 스칼라 스타일 가이드는 등호 구문을 권장합니다
프로 시저 구문에 반대 방법에 대해서는 스칼라 스타일 가이드는 등호 구문을 권장합니다
// don't do this def printBar(bar: Baz) { println(bar) } // write this instead def printBar(bar: Bar): Unit = { println(bar) }
-
==============================
5.한 가지 : 단위 단위를 반환하지 않습니다 반환해야하는 방법의 마지막 문을 상상한다. 비와 동일한 구문은 다음 매우 편리하여, 나는 그것을위한 몇 가지 사용 사례를 참조로이가되지 않습니다 희망
한 가지 : 단위 단위를 반환하지 않습니다 반환해야하는 방법의 마지막 문을 상상한다. 비와 동일한 구문은 다음 매우 편리하여, 나는 그것을위한 몇 가지 사용 사례를 참조로이가되지 않습니다 희망
-
==============================
6.기본 스타일을 점진하는 시간으로 변경하고,이 답변에 의견의 대부분에서 언급 된, 함수 선언에 대해 = 구문을 사용하는 공식 스타일 가이드에서 권장합니다.
기본 스타일을 점진하는 시간으로 변경하고,이 답변에 의견의 대부분에서 언급 된, 함수 선언에 대해 = 구문을 사용하는 공식 스타일 가이드에서 권장합니다.
-
==============================
7.반환 값을 해달라고 방법에 대해, 이러한 방법을 표현하는 방법은 결과 유형과를 떠나고있다 중괄호로 둘러싸인 블록과 방법에 따라 서명 같습니다. 에서 이 양식은, 방법, 절차와 같은에만 실행되는 방법을 찾습니다 그 부작용.
반환 값을 해달라고 방법에 대해, 이러한 방법을 표현하는 방법은 결과 유형과를 떠나고있다 중괄호로 둘러싸인 블록과 방법에 따라 서명 같습니다. 에서 이 양식은, 방법, 절차와 같은에만 실행되는 방법을 찾습니다 그 부작용.
from https://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스파크 : 조건부 dataframe에 열 추가 (0) | 2019.11.05 |
---|---|
[SCALA] dataframe으로 csv 파일을 읽는 동안 스키마를 제공합니다 (0) | 2019.11.05 |
[SCALA] 하나를 사용하여 스칼라 코드에서 오류를 처리하는 (0) | 2019.11.05 |
[SCALA] 스칼라 함수를 정의하는 두 가지 방법. 차이점은 무엇입니까? (0) | 2019.11.05 |
[SCALA] 유용성 (실제 응용 프로그램에서와 같이) 무두질 v.s.의 스칼라의 부분 적용 (0) | 2019.11.05 |