وجدت Scala قائمة و seqprojection ، عند الحاجة seq والتعيين
سؤال
الجلوس مع الخطأ التالي:
TestCaseGenerator.scala:47: error: type mismatch;
found : List[(State, Seq.Projection[State])]
required: Seq[(State, Set[State])]
new LTS(Map(rndTrans: _*), Map(rndLabeling: _*))
^
one error found
لا يمكن معرفة ما يجب فعله حيال ذلك.
ال rndTrans
تتم تهيئته على النحو التالي:
val rndTrans = for (s <- (0 to nStates).toList)
yield (new State(s) -> (for (s2 <- 0 to nStates
if prob(trans_probability))
yield new State(s2)))
تحديث: لقد كنت أستخدم الإصدار 2.7.
المحلول
عندما toSet
الطريقة (أو toMap
) غير متوفر (لأن المرء يقوم بتشغيل نسخة أقدم من Scala أو لأن التحويل لم يتم تنفيذه فقط) ، في كثير من الأحيان يمكن للمرء تطبيق أحد المخططات التالية.
val collection: Seq[SomeType] = ...
Set( collection: _* )
أو
Set() ++ collection
يستخدم الإصدار الأول :_*
لتحويل المجموعة إلى وسيطة تسلسل ثم يستدعي طريقة مُنشئ لنوع المجموعة الجديد. أنشأت الطريقة الثانية مجموعة فارغة من النوع الجديد ثم تضيف (++
) المجموعة القديمة لها.
نصائح أخرى
عموما أ Seq
ليس Set
. حاول تحويل تسلسل القيمة إلى مجموعة.
val rndTrans = for (s <- (0 to nStates).toList)
yield (new State(s) -> (for (s2 <- 0 to nStates
if prob(trans_probability))
yield new State(s2)).toSet)
لا تنتمي إلى StackOverflow