복붙노트

[SCALA] 때 등호 스칼라 방법 선언에 서명을 사용 하는가?

SCALA

때 등호 스칼라 방법 선언에 서명을 사용 하는가?

equals와 서명 :

object HelloWorld {
  def main(args: Array[String]) = {
    println("Hello!")
  }
}

없이 등호 :

object HelloWorld {
  def main(args: Array[String]) {
    println("Hello!")
  }
}

위의 프로그램은 모두 같은 방법으로 실행합니다. 내가 스칼라에서 좋아하지 않는 블로그 포스트 것들 나는 등호 누락 로그인 할 때 값을 반환하는 방법은 등호 사용해야합니다, 방법, (자바의 무효와 동일) 단위를 반환합니다 읽어 보시기 바랍니다. 그러나 값을 반환하지 않는 방법 중 하나의 방법을 쓸 수 있습니다.

등호 값을 반환하지 않는 스칼라 방법 로그인 사용하기위한 가장 좋은 방법은 무엇입니까?

해결법

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

    1.사실 다니엘 꽤 강하게 동의하지 않는다. 나는 비와 동일한 구문을 사용해서는 안됩니다 생각합니다. 당신의 메소드가 API로 노출 실수로 잘못된 유형을 반환에 대한 걱정되는 경우, 명시 적 타입 주석을 추가 :

    사실 다니엘 꽤 강하게 동의하지 않는다. 나는 비와 동일한 구문을 사용해서는 안됩니다 생각합니다. 당신의 메소드가 API로 노출 실수로 잘못된 유형을 반환에 대한 걱정되는 경우, 명시 적 타입 주석을 추가 :

    object HelloWorld {
      def main(args: Array[String]): Unit = {
        println("Hello!")
        123
      }
    }
    

    비와 동일한 구문은 짧아지고 "청소기"를 보일 수 있습니다,하지만 난 그냥 혼란의 가능성을 추가 생각합니다. 가끔 등호를 추가 잊어하고 단위를 반환 할 때 실제로 내 방법은 값을 반환 믿었습니다. 비 같거나 같지-와-추론 형 구문이 너무 시각적으로 비슷하기 때문에,이 문제를 그리워 쉽습니다.

    그것은 나에게 조금 더 많은 작업 비용에도 불구하고 그들이 (즉, 노출 인터페이스) 문제 때, 나는 명시 적 유형의 주석을 선호합니다.

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

    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. ==============================

    3.당신은 등호 단위를 반환 정의를 제외하고 호출 선언에 서명을 사용해야합니다.

    당신은 등호 단위를 반환 정의를 제외하고 호출 선언에 서명을 사용해야합니다.

    후자의 경우, 당신은 등호 포기 수 있습니다. 이 구문은하지만, 사용되지 할 수 있으므로이를 피해야합니다. 등호 기호 사용 및 반환 유형이 항상 작동합니다 선언.

  4. ==============================

    4.프로 시저 구문에 반대 방법에 대해서는 스칼라 스타일 가이드는 등호 구문을 권장합니다

    프로 시저 구문에 반대 방법에 대해서는 스칼라 스타일 가이드는 등호 구문을 권장합니다

    // don't do this
    def printBar(bar: Baz) {
      println(bar)
    }
    // write this instead
    def printBar(bar: Bar): Unit = {
      println(bar)
    }
    
  5. ==============================

    5.한 가지 : 단위 단위를 반환하지 않습니다 반환해야하는 방법의 마지막 문을 상상한다. 비와 동일한 구문은 다음 매우 편리하여, 나는 그것을위한 몇 가지 사용 사례를 참조로이가되지 않습니다 희망

    한 가지 : 단위 단위를 반환하지 않습니다 반환해야하는 방법의 마지막 문을 상상한다. 비와 동일한 구문은 다음 매우 편리하여, 나는 그것을위한 몇 가지 사용 사례를 참조로이가되지 않습니다 희망

  6. ==============================

    6.기본 스타일을 점진하는 시간으로 변경하고,이 답변에 의견의 대부분에서 언급 된, 함수 선언에 대해 = 구문을 사용하는 공식 스타일 가이드에서 권장합니다.

    기본 스타일을 점진하는 시간으로 변경하고,이 답변에 의견의 대부분에서 언급 된, 함수 선언에 대해 = 구문을 사용하는 공식 스타일 가이드에서 권장합니다.

  7. ==============================

    7.반환 값을 해달라고 방법에 대해, 이러한 방법을 표현하는 방법은 결과 유형과를 떠나고있다 중괄호로 둘러싸인 블록과 방법에 따라 서명 같습니다. 에서 이 양식은, 방법, 절차와 같은에만 실행되는 방법을 찾습니다 그 부작용.

    반환 값을 해달라고 방법에 대해, 이러한 방법을 표현하는 방법은 결과 유형과를 떠나고있다 중괄호로 둘러싸인 블록과 방법에 따라 서명 같습니다. 에서 이 양식은, 방법, 절차와 같은에만 실행되는 방법을 찾습니다 그 부작용.

  8. from https://stackoverflow.com/questions/944111/when-to-use-the-equals-sign-in-a-scala-method-declaration by cc-by-sa and MIT license