التعامل مع النقابات والجهاز الفرعي والدقائق في سكالا
-
11-09-2019 - |
سؤال
أحتاج إلى كتابة مقتطف كود من شأنه أن يقارن صفيفات متعددة وإنتاج المجموعة التي تتطابق مع البيانات الموجودة في هذه الصفائف، وإنتاج مجموعة البيانات فقط في صفيف A، ولكن ليس في صفيف B، C، D، في صفيف B ولكن ليس في ، C، D، القدرة على التعامل مع أي عدد من المصفوفات (أي حلقات ديناميكية). يجب أن يستخدم الشفرة وظائف مجهولة في SCALA (أي ليس مثل حلقات مجموعة منتظمة مثل في Java).
المحلول
يبدو وكأنه الواجبات المنزلية بالنسبة لي. إلى حد بعيد أسهل طريقة للقيام بذلك هي رمي محتويات الصفيف A في Set
واستخدام عملية إزالة. هذا سوف يكون على) أين ن = sum {| a |، | b |، | c |، ...}. الحل التالي يعمل من أجل التعسفي Iterable
, ، ليس فقط Array
:
def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
case a :: tail => {
val set = a.foldLeft(Set[A]()) { _ + _ }
tail.foldLeft(set) { _ -- _ }
}
case Nil => Nil
}
لا تنتمي إلى StackOverflow