Succint синтаксис преобразования в карту и доступа к элементу - PullRequest
2 голосов
/ 04 апреля 2019

Я хотел бы получить доступ к значениям списка, преобразованного в Карту, наиболее правильно и оперативно.Кажется, я что-то упустил, так как

val lit = List(('a',1), ('b',2), ('c',3))
val m = lit.toMap
println( m('c') )

, очевидно, работает должным образом, печатая 3.

Однако

println( lit.toMap ('b') )

завершается неудачно с «Несоответствием типов»,независимо от моей попытки поставить скобки вокруг выражения lit.toMap.Я, должно быть, скучаю по чему-то очень глупому, но что это?

1 Ответ

2 голосов
/ 04 апреля 2019

List.toMap принимает неявный параметр, когда вы пишете

lit.toMap

Он будет скомпилирован в

lit.toMap(Predef.$conforms[(Char, Int) <:< (Char, Int)])

Так что если вы поместите () сразу после toMap,Неважно, lit.toMap() или (lit.toMap)() компилятор Scala ожидает, что вы передадите неявный параметр явно , поэтому вам нужно написать:

lit.toMap(implicitly[(Char, Int) <:< (Char, Int)])('b')

Или

lit.toMap.apply('b')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...