복붙노트

[SCALA] 스칼라에서 "보기"기능은 무엇입니까?

SCALA

스칼라에서 "보기"기능은 무엇입니까?

특히 여기 문제 1에서 찾고 있어요

http://pavelfatin.com/scala-for-project-euler/

다음과 같이 나열된 코드는

val r = (1 until 1000).view.filter(n => n % 3 == 0 || n % 5 == 0).sum

나는 "보기"를 제외한 모든 것을 따를 수 있습니다. 사실 나는 그래도 코드가 컴파일 정확히 같은 대답을 생산 전망을 가지고가는 경우에.

해결법

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

    1.보기, 게으른 수집을 생산하고, 예를 들어 해당 통화 있도록 필터는 컬렉션의 모든 요소를 ​​평가하지 않습니다. 명시 적으로 액세스되면 요소 만 평가됩니다. 이제 합 액세스 모든 요소를 ​​않지만, 볼 수있는 필터에 대한 호출이 전체 벡터를 생성하지 않습니다. (스티브에 의해 코멘트 참조)

    보기, 게으른 수집을 생산하고, 예를 들어 해당 통화 있도록 필터는 컬렉션의 모든 요소를 ​​평가하지 않습니다. 명시 적으로 액세스되면 요소 만 평가됩니다. 이제 합 액세스 모든 요소를 ​​않지만, 볼 수있는 필터에 대한 호출이 전체 벡터를 생성하지 않습니다. (스티브에 의해 코멘트 참조)

    뷰의 사용의 좋은 예는 다음과 같습니다

    scala> (1 to 1000000000).filter(_ % 2 == 0).take(10).toList
    java.lang.OutOfMemoryError: GC overhead limit exceeded
    

    다음은 스칼라는 처음 액세스 (10) 그러나 전망에 1,000,000,000 요소 컬렉션을 만들려고 :

    scala> (1 to 1000000000).view.filter(_ % 2 == 0).take(10).toList
    res2: List[Int] = List(2, 4, 6, 8, 10, 12, 14, 16, 18, 20)
    
  2. ==============================

    2.나는 스칼라에 대해 잘 알고 있지만, 아마도이 페이지 세력의 도움이되지 않습니다 ...

    나는 스칼라에 대해 잘 알고 있지만, 아마도이 페이지 세력의 도움이되지 않습니다 ...

    그래도 코드가 이론에서보기없이 작동하지만 힘 엄격한보다는 게으른 방식으로 컬렉션의 모든 요소를 ​​구성하는 몇 가지 추가 작업을하고있을 것입니다 것처럼 소리가 그래서.

  3. from https://stackoverflow.com/questions/6799648/in-scala-what-does-view-do by cc-by-sa and MIT license