Как вызвать метод Scala с подписью Map Mutable? - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть код Scala:

import collection.mutable._

def myMethod(mycollection: Map[A, B]) = {
    ...
  }

Как мне вызвать этот метод?

Попробовал это:

myMethod(["test1", "test2"])

Ошибка: Identifier expected but 'def' found

Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2018

A Map - это структура данных, которая сопоставляет ключ (некоторого типа K) со значением (некоторого типа V). В Scala такую ​​пару можно обозначить синтаксисом key -> value. Если ваше намерение состоит в том, чтобы иметь один String ключ «test1», который сопоставляется со значением String «test2», то вы можете сделать это следующим образом:

Map("test1" -> "test2")

Ваше объявление myMethod недопустимо: вам нужно либо определить фактические типы для A и B, либо сделать их универсальными параметрами для вашего метода (чтобы метод был универсальным):

// With specific types (assuming both keys and values have String types):
def myMethod(mycollection: Map[String, String]) = //...

// In generic form (allows any key type A, or value type B):
def myMethod[A, B](mycollection: Map[A, B]) = //...

В любом случае, вы можете использовать результат в качестве аргумента при вызове вашего метода следующим образом:

myMethod(Map("test1" -> "test2"))

Обратите внимание:

  • Квадратные скобки используются при определении параметров универсального типа или указании типов, используемых в качестве параметров типа.
  • Параметры типа могут быть выведены из предоставленных значений. Например, Map("test1" -> "test2") использует String в качестве типа и для ключа, и для значения и эквивалентно Map[String, String]("test1" -> "test2").
  • Если вам нужно более одной пары ключ / значение, перечислите их через разделитель запятых, например: Map("key1" -> "value1", "key2" -> "value2", "key3" -> "value3")

Я настоятельно рекомендую вам прочитать хорошую книгу по Scala , такую ​​как превосходное Программирование на Scala, 3-е издание от Odersky, Spoon & Venners, чтобы ознакомиться с его синтаксисом и стандартной библиотекой.

В заключение, я настоятельно рекомендую вам использовать неизменную версию Map, когда это возможно. Если вы не знакомы с принципами функционального программирования , на первый взгляд это может показаться необычным, но преимущества огромны.

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