IT

Scala의 "flatmap that s ***"관용적 표현은 어디에서 왔습니까?

lottoking 2020. 8. 16. 21:32
반응형

Scala의 "flatmap that s ***"관용적 표현은 어디에서 왔습니까?


스칼라 민속에서 그런 자리를 차지할만한 플랫 맵의 강력한 점은 무엇입니까?


이 문구가있는 이유는 flatMap (및 기타 고차 함수)에 대한 호출로 작성하는 지루한 if / then / else 코드를 많이 대체 할 수 있기 때문입니다.

이것은 특히 옵션의 경우에 해당됩니다 ( http://tonymorris.github.io/blog/posts/scalaoption-cheat-sheet/ 참조 )

그러나 그것은 다른 모나드에도 적용됩니다 (정확히 인정하지만 아직 세부 사항을 정확히 이해해야합니다)

각 함수가 null을 반환하는 함수 (또는 사용할 함수)를 사용하려는 컬렉션이있는 상황을 상상해 수 있습니다. 실제로 null을 사용하면 코드가 null 검사로 가득 차게됩니다. 그러나 값 대신 옵션을 사용하는 경우 원하는 함수로 값을 플랫 매핑하고 함수의 경우 함수를 연결하고 null이 아닌 결과만으로 컬렉션을 얻을 수 있습니다. 당신이 원합니다.

그 설명이 다소 복잡하기 때문에 "그냥 플랫 맵"이라는 짧은 조언이 있습니다.


내가 들었던 이야기는 두 명의 뛰어난 Scala 프로그래머 중 한 명이 다음과 같은 코드를 작성하기 시작할 때 이룬다는 것입니다.

option match {
    case Some ...

어느 시점에서 다른 사람이 "이게 뭐야? 아마추어 시간? 평면지도 그거!"

에 대한 강력한 기능에 대부분는 flatMap... 첫째, 기본 모나드 연산자입니다. 이는 예를 들어 컨테이너 (예 : Option, 컬렉션 등), 연속, 상태가 공유되는 공통 작업임을 의미합니다 . 둘째, Option은 (와) flatMap모나드 작업이 아닙니다. , 덕택에 존재하지 않습니다. 또한 조작하는 데이터에 대한 지식이 너무 많이 필요합니다.

참고 : 이전에 일치가 더 느리다고 일치합니다. flatMap사실이 글을 쓰는 시점의 가장 최근 버전 인 2.10.1까지 그 반대가 사실입니다.)


중요한 점은 flatMapScala의 모나 딕 바인딩 작업 표현이라는 것입니다. 웹에는 모나드의 목적과 그것이 왜 그렇게 유용한 지 설명하는 수많은 튜토리얼이 있습니다. James Iry는 몇 가지 세부 사항에 대해 설명합니다.


Runar Bjarnason은 원산지를 찾고있는 사람입니다.

그것은 그것이 왜 그렇게 강력한 지 능숙한 것입니다. 옵션 클래스는 최종의 조회 (예 :)를 최종 결과로 반복적으로 flatMap하는 방법을보기 시작하는 가장 좋은 곳입니다.

참고 URL : https://stackoverflow.com/questions/8559537/where-does-the-flatmap-that-s-idiomatic-expression-in-scala-come-from

반응형