У меня есть такой метод:
def close(): Unit = {
things.foreach {
case (attr1, attr2) =>
File.<do_something>(attr1, attr2)
}
}
Какая структура это? Я знаю, что он выполняет итерацию через весь things
, который является картой, если <attr1, attr2>
. Могу ли я получить доступ к самой вещи? Что делать, если я также хотел совместить шаблон с классом / типом thing
. Как я могу это сделать?
foreach
- это метод, который принимает в качестве аргумента функциюf: A => U
.Пример ниже
Теперь, хорошая вещь о scala заключается в том, что вы можете сопоставлять образцы по элементам. ( читать о patmat в scala )
Второй пример - это то, что происходит в вашем примере. вы сравниваете каждый элемент с
case (attr1, attr2)
example,
Без соответствия шаблону вы также можете сделать,
Это приложение анонимной функции, которая имеет два аргумента для каждого элемента в
things
.В случае, если
things
являетсяMap[A, B]
, он будет применятьFile.<do_something>
к ключу и значению каждой пары на карте, если первый аргумент<do_something>
имеет типA
, а второй аргумент имеет типB
.