스칼라 맵 : 신비한 구문 설탕?
-
22-08-2019 - |
문제
나는 방금 스칼라에 대한이 구문을 발견했습니다. Map
(여기에서 사용됩니다 변하기 쉬운 형태)
val m = scala.collection.mutable.Map[String, Int]()
m("Hello") = 5
println(m) //PRINTS Map(Hello -> 5)
이제 이것이 구문이 있는지 확실하지 않습니다 설탕 언어에 내장되어 있거나,지도가 확장된다는 사실과 관련하여 더 근본적인 일이 여기에서 진행되고 있는지 여부 PartialFunction
. 누구든지 설명 할 수 있습니까?
해결책
당신이 의미한다면 (더 명백 할 수 있다면 좋을 것입니다)
m("Hello") = 5
그것은 의도 된 구문 설탕입니다
m.update("Hello", 5)
m이 무엇인지와 무관합니다. 이것은 유사합니다
m("Hello")
그것은 구문 설탕입니다
m.apply("Hello")
(나는 단지 "스칼라의 프로그래밍"을 읽고 있습니다.)
다른 팁
@starblue가 맞습니다. 당신은 또한 오히려 창의적인 일을 할 수 있습니다. update
반환 값과 같은 다른 할당 된 것보다. 예를 들어:
val a = Map(1 -> "one") // an immutable Map[Int, String]
val b = a(2) = "two"
val c = b(5) = "five"
val d = c(1) = "uno"
d == Map(1 -> "uno", 2 -> "two", 5 -> "five") // => true
이것은 작동하기 때문에 작동합니다 immutable.Map#update
새 인스턴스를 반환합니다 Map
. C 훈련 된 눈에는 조금 이상하게 보이지만 익숙해집니다.
제휴하지 않습니다 StackOverflow