التعامل مع النقابات والجهاز الفرعي والدقائق في سكالا

StackOverflow https://stackoverflow.com/questions/954451

سؤال

أحتاج إلى كتابة مقتطف كود من شأنه أن يقارن صفيفات متعددة وإنتاج المجموعة التي تتطابق مع البيانات الموجودة في هذه الصفائف، وإنتاج مجموعة البيانات فقط في صفيف 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
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top