Контекст сравнивает два ключа и значения карты в Scala, но я не уверен, что знаю, как правильно это задавать. Скажем, у меня есть два конкретных классовСкала, сравнивающая две клавиши и значения карты
case class WhiteList(attributes: Option[Map[String, Set[String]]])
и
case class Query(attributes: Option[Map[String, Set[String]]])
Я хочу, чтобы сравнить значения атрибутов между этими двумя классами, если ключ в карте атрибутов одинакова и в противном случае вернуть false
.
Так что, если у меня был
val wl = WhiteList(attributes = Some(Map("patterns" -> Set("plaid"),
"colors" -> Set("blue", "orange")))
и
val q = Query(attributes = Some(Map("patterns" -> Set("plaid"),
"colors" -> Set("orange")))
Если я сравнил эти два, я хочу вернуться true
, потому что: 1) они имеют одинаковые ключи Карта и 2) значения соответствующих ключей пересекаются
Если бы у меня было
val q2 = Query(attributes = Some(Map("patterns" -> Set("stripes"),
"colors" -> Set("orange", "red", "blue")))
и сравнили значения соответствующих ключей с wl, я хочу false
, потому что значение «pattern» не пересекается.
Если бы я был
val q3 = Query(attributes = Some(Map("starwars" -> Set("a new hope", "empire strikes back"),
"patterns" -> Set("stripes"),
"colors" -> Set("orange", "red", "blue")))
и сравнивали q3 к WL, я ожидал бы false
, потому что ключи атрибута не один-к-одному.
Я думаю, что должен быть функциональный способ сделать это.
Из интереса, два класса случая выглядят одинаково, почему два случая классов вместо одного? – bjfletcher