【发布时间】:2018-10-09 22:31:05
【问题描述】:
在 pubspec.yaml 中,我使用english_words 库来生成单词对:
dependencies:
flutter:
sdk: flutter
# Contains a few thousand of the most used English words
# plus some utility functions.
english_words: ^3.1.0
现在 WordPair 类不是 String 的子类型,因此我不能使用 Iterable 的 lambda 或类似 cast 或 retype 的函数将“WordPairs”“转换”为字符串。
所以,我不得不编写名为 getWords() 的函数。
请参阅下面包含此实现的 Dart 文件 Model.dart。
您会看到旧行被注释掉,它在 getter 中返回类型 Iterable。
是否有更有效的方法来做到这一点?
例如,我不想在转换中涉及 List 类,但我找不到任何其他方法来成功地做到这一点。
谢谢。
---------------- 模型.dart
import 'package:english_words/english_words.dart' show WordPair, generateWordPairs;
import 'dart:collection';
/// Model Class
///
class Model {
String get randomWordPair => new WordPair.random().asPascalCase;
// Iterable<WordPair> get wordPairs => generateWordPairs().take(10);
Iterable<String> get wordPairs => getWords();
Iterable<String> getWords(){
Iterable<WordPair> pairs = generateWordPairs().take(10);
ListWords<String> words = new ListWords();
for (var pair in pairs) {
words.add(pair.asString);
}
return words;
}
}
class ListWords<E> extends ListBase<E> {
final List<E> l = [];
set length(int newLength) { l.length = newLength; }
int get length => l.length;
E operator [](int index) => l[index];
void operator []=(int index, E value) { l[index] = value; }
}
【问题讨论】:
-
这个问题你解决了吗?
-
@sutch 像 Stackoverflow 上的许多事情一样,我已经转向其他问题......