문제

나는 방금 스칼라에 대한이 구문을 발견했습니다. 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 훈련 된 눈에는 조금 이상하게 보이지만 익숙해집니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top