[SCALA] 사람이 기호가 "=>"스칼라에서 어떻게 사용되는지 설명 할 수
SCALA사람이 기호가 "=>"스칼라에서 어떻게 사용되는지 설명 할 수
나는 심볼의 메이크업의 사용 =>,하지만 난 정말 이해할 수 없었으므로 스칼라 코드 조각을 많이 읽었습니다. 나는 인터넷에서 검색을 시도했지만, 종합 아무것도 찾을 수 없습니다. 심볼이 얼마나 / 사용할 수에 대한 모든 포인터 / 설명이 정말 도움이 될 것입니다.
(운영자가 기능 리터럴에 그림으로 제공하는 방법을보다 구체적으로는, 나는 또한 알고 싶다)
해결법
-
==============================
1.추가 값 / 이름 => 함수를 정의하는 데 사용되는 다른 구문 함수 리터럴을 정의하는 데 사용되는보다 통과.
추가 값 / 이름 => 함수를 정의하는 데 사용되는 다른 구문 함수 리터럴을 정의하는 데 사용되는보다 통과.
예 시간. 의 당신이 다른 함수에서받는 함수가 있다고 가정 해 봅시다. 컬렉션은 그들로 가득하지만, 우리는 필터를 선택할 수 있습니다. 필터 (목록 등) 모음에 사용하는 경우, 당신은 false를 반환하기 위해 제공하는 기능을 일으키는 모든 요소를 취할 것입니다.
val people = List("Bill Nye", "Mister Rogers", "Mohandas Karamchand Gandhi", "Jesus", "Superman", "The newspaper guy") // Let's only grab people who have short names (less than 10 characters) val shortNamedPeople = people.filter(<a function>)
(아마도, 부울 : 문자열) 데프 isShortName (이름),하지만 그것은 바로 거기 단지 장소에 더 좋은 것 우리는 다른 곳에서 실제 기능에 전달할 수 있습니다. 아아, 우리는 함수 리터럴, 할 수있다.
val shortNamedPeople = people.filter( name => name.length < 10 )
여기서 우리가 한 일은, 반환 부울 (사람들이 타입 목록 [문자열]이기 때문에) 문자열로받는 함수를 만드는 것입니다. 예쁜 오른쪽 냉각?
이 구문은 많은 상황에서 사용된다. 하자 당신이 다른 함수에 걸리는 함수를 작성하고 싶은 말은. 이 다른 함수는 문자열에 가지고 가고, int를 반환해야합니다.
def myFunction(f: String => Int): Int = { val myString = "Hello!" f(myString) } // And let's use it. First way: def anotherFunction(a: String): Int = { a.length } myFunction(anotherFunction) // Second way: myFunction((a: String) => a.length)
리터럴을 작동 무엇의가 있음. 이름 별과 별 값으로 다시가는, 당신이 원하는 때까지 평가할 수 없습니다에 당신이 매개 변수를 강제 할 수있는 트릭이있다. 고전적인 예 :
def logger(message: String) = { if(loggingActivated) println(message) }
이 모습은 좋아하지만, 로거가 호출 될 때 메시지는 실제로 평가된다. 어떤 메시지가 잠시 걸리는 경우를 평가하기 위해? 예를 들어, 로거 (veryLongProcess ()), veryLongProcess ()는 문자열을 반환하는 경우. 으악? 정말. 우리는 실제로 필요할 때까지 호출 할 수 없습니다) veryLongProcess를 (강제로 기능 리터럴에 대한 우리의 지식을 사용할 수 있습니다.
def logger(message: => String) = { if(loggingActivated) println(message) } logger(veryLongProcess()) // Fixed!
이제 로거 (좌측> 따라서 육안 =) 매개 변수를 사용하지 않는 기능을 도입한다. 이 (println 메소드에서) 사용되는 경우 당신은 여전히 이전처럼 사용할 수 있습니다,하지만 지금은, 메시지는 평가된다.
from https://stackoverflow.com/questions/12529582/can-anyone-explain-how-the-symbol-is-used-in-scala by cc-by-sa and MIT license
'SCALA' 카테고리의 다른 글
[SCALA] 스칼라 SBT와 기업의 프록시 - SunCertPathBuilderException (0) | 2019.11.22 |
---|---|
[SCALA] 임베디드 스칼라 REPL 상속 부모 클래스 경로 (0) | 2019.11.22 |
[SCALA] 스파크 및 SparkSQL : 어떻게 모방 윈도우 함수에? (0) | 2019.11.22 |
[SCALA] 스칼라 여러 Seqs의 게으른 직교 제품 (0) | 2019.11.22 |
[SCALA] toSet를 호출하여 매개 변수 유형 오류를 누락? (0) | 2019.11.22 |