【发布时间】:2019-01-18 07:32:49
【问题描述】:
我目前正在制作一个可以存储英语单词的类。我想让它尽可能安全(如果输入无效 - 返回错误消息),这就是我迷路的地方。我有这个存储英文单词的代码:
case class English_LT_Word private (word: String)
object English_LT_Word {
def apply(word: String) = new English_LT_Word(word)
def createNewWord(word: String): Either[String, English_LT_Word] = {
if (word.length > 0 && word.forall(x=>consonants.contains(x) || vowels.contains(x))) Right(apply(word))
else Left("'" + word + "'" + " is an invalid word")
}
}
在这个例子中,我可以像这样创建任何英文单词:
val english = English_LT_Word.apply("Awesome")
val english = English_LT_Word.createNewWord("Awesome")
在这里,我对使用什么有一个难题,它并不漂亮。我该如何正确地做到这一点?将 .apply() 方法设为私有是不可能的,因为(长话短说)编译器将不同步。我希望只能使用 .createNewWord() 方法来创建我的单词。有什么想法吗?
谢谢!! ^^
【问题讨论】:
标签: scala methods apply private