如何创建多个 setter
How to create multiple setters
我有一个变量,我想提供调用多种类型的 setter 的选项,但我当然会用一种类型设置变量。例如,如果我有一个名为 list 的变量,我希望能够使用单个列表项(即字符串)调用 setter,然后在 setter 方法中我会将字符串添加到末尾的名单。另一种设置变量的方法是通过实际列表,setter,我只是将列表设置为传入的列表。
这是我想做的一个例子,但是我第二次调用列表 setter 方法时,我收到一条错误消息 The name 'list' is already defined
:
List<String> _list = [];
List<String> get list => list;
set list(List<String> newList) {
_list = newList;
}
set list(String newListItem) {
_list = [..._list, newListItem];
}
那是不可能的。
在 Dart 中,每个变量只能有一个 setter。
您将需要重命名您的 setter 之一以使用不同的名称。
正如雷米所说,这是不可能的。我认为最好不要这样做,因为它会改变 setter 合同的预期。也就是说,您希望 setter 替换变量的值。附加一个 setter 是违反直觉的,并且会导致其他开发人员感到困惑。
通常,为了代码库的可维护性,最好为您的 class 行为提供一个显式接口,而不是提供简洁的快捷方式。
我有一个变量,我想提供调用多种类型的 setter 的选项,但我当然会用一种类型设置变量。例如,如果我有一个名为 list 的变量,我希望能够使用单个列表项(即字符串)调用 setter,然后在 setter 方法中我会将字符串添加到末尾的名单。另一种设置变量的方法是通过实际列表,setter,我只是将列表设置为传入的列表。
这是我想做的一个例子,但是我第二次调用列表 setter 方法时,我收到一条错误消息 The name 'list' is already defined
:
List<String> _list = [];
List<String> get list => list;
set list(List<String> newList) {
_list = newList;
}
set list(String newListItem) {
_list = [..._list, newListItem];
}
那是不可能的。
在 Dart 中,每个变量只能有一个 setter。 您将需要重命名您的 setter 之一以使用不同的名称。
正如雷米所说,这是不可能的。我认为最好不要这样做,因为它会改变 setter 合同的预期。也就是说,您希望 setter 替换变量的值。附加一个 setter 是违反直觉的,并且会导致其他开发人员感到困惑。
通常,为了代码库的可维护性,最好为您的 class 行为提供一个显式接口,而不是提供简洁的快捷方式。