// an enum like this can let you define a fixed set of possible values
enum class Case { NOMINATIVE, GENITIVE, DATIVE... }
data class Declension(val case: Case, val singular: String, val plural: String)
然后添加您需要的内容:
data class WordData(
val name: String,
val meanings: List<String>,
val declensions: List<Declension>
)
val word = WordData(
name = "wordo",
meanings = listOf("A made-up word"),
declensions = listOf(
Declension(NOMINATIVE, singular = "wordo", plural = "wordoo"),
...
)
)
您也可以使用 * map * 代替 * list *,并将Case类型Map到数据对象,这样每个case就有一个对象(该对象保存该case表单的所有信息)。 实际上,这是一个有组织的事情,思考什么代表你想要表示的特定数据,以及如何将其组织成更大的数据对象,作为一个有用的容器和组织者。我只是举了一些模糊的例子--这真的取决于你需要表示的语言和数据。以及你想用它做什么。也许简单的列表也很好!但是你肯定有选择,有时更多的结构确实很有帮助
4条答案
按热度按时间i2loujxw1#
不确定您的规范,但您是否考虑过重新设计您的方法,其中您有一个
data class
,并有一个list
属性,如下所示?虽然在一个类或任何结构中有这么多参数并不坏,但您只限于
N
参数(在您的情况下为20个)。你可以考虑为每一个可能有多于或少于20个含义/变格的单词指定这样一个
data class
,如果含义或变格少于20,你也不必指定一个空参数,但我再次不确定你的用例。yqyhoc1h2#
z. y的答案是适合您案例的正确解决方案。
考虑到您正在开发字典应用程序,可能会出现需要快速访问精确单词数据的情况。您可以将单词存储在Map中,其中键将是单词本身,值将是含义和变化。在这种情况下,建议的数据类将过多。
您可以将其简化为
然后像这样将其存储在Map中
然后你就可以访问,例如,所需单词的含义,就像这样
7y4bm7vi3#
您可以比其他示例更进一步,构建一个完整的数据结构,如果它适合您正在处理的数据的话!
含义在列表中可能没问题,对吧?但是对于变格,你可能想把它们放在一些有意义的结构中,而不是仅仅把它们放在列表中。你可以使用 * 另一个 * 数据类来实现这一点:
通过这种方式,您可以为存储的每个字符串赋予含义,并且可以在向用户显示内容、执行查找、制作测试问题等时使用该含义!
您可以在
WordData
类中使用该对象:另一种选择是,您可以将每个变格定义为一段数据,而不是定义包含所有可能性的大
Declensions
对象(如果未使用,则将它们保留为 * null *):然后添加您需要的内容:
您也可以使用 * map * 代替 * list *,并将
Case
类型Map到数据对象,这样每个case就有一个对象(该对象保存该case表单的所有信息)。实际上,这是一个有组织的事情,思考什么代表你想要表示的特定数据,以及如何将其组织成更大的数据对象,作为一个有用的容器和组织者。我只是举了一些模糊的例子--这真的取决于你需要表示的语言和数据。以及你想用它做什么。也许简单的列表也很好!但是你肯定有选择,有时更多的结构确实很有帮助
oyxsuwqo4#
1.有这么多参数可以吗?
1.有没有更好的办法?
一种方法是将相关参数组合到单个对象中
Person数据类上的firstName、middleName和surName示例
然后用“Name”类封装原始的“Person”类。
你必须在你的“Word”类中识别这样的关系。
另一种方法是构建器模式,这在构建复杂对象时很流行。不确定在你的环境中是否可行。