(سكالا) إنشاء بنية بيانات للكلمات الإنجليزية

0

أنا أعمل حاليًا على مشكلة تتضمن العمل مع الكلمات الإنجليزية. أنا جديد إلى حد ما في البرمجة الوظيفية وأريد كتابة رمز جيد قدر الإمكان. إنه سؤال بسيط حقًا ولكني أريد فقط أن أحصل على هذا الحق! ^^

كيف أقوم بإنشاء بنية بيانات للكلمات الإنجليزية؟ أحتاجها لأنه إذا استخدمت سلاسلها فقط - لا يمكن للكلمات أن تحتوي على أي أرقام أو أي حرف غير متناسق - فالسلاسل تسمح بذلك.

أفكر في إنشاء فئة حالة تتجاوز تطبيقها (أو المُنشئ - أتيت من خلفية OP لذا ما زلت أخلطها) الطريقة التي تُرجع إما [String، EnglishWord] حيث سيُرجع Left رسالة خطأ - شيء مثل - "العثور على رقم في كلمتك". هل أفكر بشكل صحيح؟ أي اقتراحات؟

-شكرا جزيلا!!

هتاف =)

1 إجابة

2
افضل جواب
  1. يجب عليك تجاوز طريقة التطبيق ، حيث لا يمكنك جعل المنشئ يعيد أي شيء بخلاف EnglishWord . إذا كنت تريد ، يمكنك جعل المنشئ خاصًا حتى يضطر الأشخاص إلى استخدام طريقة التطبيق.
  2. يمكنك استخدام Try[EnglishWord] بدلا من Either[String, EnglishWord] .
  3. لهذا النوع من الأشياء (لف نوع في نوع آخر لسلامة النوع) ، قد ترغب في فئة قيمة .
  4. وبطبيعة الحال ، تأكد من السماح لكلمات الحالة الزاوية مثل "أنت" و "السيرة الذاتية" و "الواجهة" ، وكما أشار أندري ، الكلمات ذات الأرقام.

هنا مثال:

import scala.util.{ Try, Success, Failure }

case class EnglishWord private(text: String) extends AnyVal

object EnglishWord {
  def apply(text: String): Try[EnglishWord] = {
    if (isValid(text)) {
      Success(new EnglishWord(text))
    } else {
      Failure(new IllegalArgumentException("Invalid word: " + text))
    }
  }

  def isValid(s: String): Boolean = ???
}
:مؤلف
فوق
قائمة طعام