我在Dart Web Toolkit中使用了稍微简单一点的Enum类版本:
/**
* Emulation of Java Enum class.
*
* Example:
*
* class Meter<int> extends Enum<int> {
*
* const Meter(int val) : super (val);
*
* static const Meter HIGH = const Meter(100);
* static const Meter MIDDLE = const Meter(50);
* static const Meter LOW = const Meter(10);
* }
*
* and usage:
*
* assert (Meter.HIGH, 100);
* assert (Meter.HIGH is Meter);
*/
abstract class Enum<T> {
final T _value;
const Enum(this._value);
T get value => _value;
}
使用r41815 Dart获得本机Enum支持,请参见http://dartbug.com/21416,可以像
enum Status {
none,
running,
stopped,
paused
}
void main() {
print(Status.values);
Status.values.forEach((v) => print('value: $v, index: ${v.index}'));
print('running: ${Status.running}, ${Status.running.index}');
print('running index: ${Status.values[1]}');
}
[Status.noneStatus.runningStatus.stoppedStatus.paused]
value:Status.none, index: 0
value:Status.running, index: 1
value:Status.stopped, index: 2
value:Status.paused, index: 3
run:Status.running,1
run index:Status.running
一个限制是不可能为枚举项设置自定义值,它们是自动编号的。
更多细节请见https://www.dartlang.org/docs/spec/EnumsTC52draft.pdf草案
Dart 现在支持枚举。
这个答案的其余部分是针对Dart的
这是真的,Dart语言没有(还没有?)拥有枚举。这是一个悬而未决的问题。
同时,这里有一个惯用的Dart片段来创建您自己的枚举。
class Enum {
final _value;
const Enum._internal(this._value);
toString() => 'Enum.$_value';
static const FOO = const Enum._internal('FOO');
static const BAR = const Enum._internal('BAR');
static const BAZ = const Enum._internal('BAZ');
}
使用const构造函数意味着可以在开关中使用该枚举。这里有一个例子:
class Fruits {
final _value;
const Fruits._internal(this._value);
toString() => 'Enum.$_value';
static const APPLE = const Fruits._internal('APPLE');
static const PEAR = const Fruits._internal('PEAR');
static const BANANA = const Fruits._internal('BANANA');
}
void main() {
var yummy = Fruits.BANANA;
switch (yummy) {
case Fruits.APPLE:
print('an apple a day');
break;
case Fruits.PEAR:
print('genus Pyrus in the family Rosaceae');
break;
case Fruits.BANANA:
print('open from the bottom, it is easier');
break;
}
}
我有一个ANTLR3语法,它构建了一个抽象语法树。我正在考虑升级到ANTLR4。但是,ANTLR4似乎只构建解析树,而不构建抽象语法树。例如,选项不再被识别。此外,在“最终的ANTLR4参考文献”的文本中既没有“AST”也没有“抽象语法”。
单例模式确保只创建一个类的实例。我如何在飞镖中建立这个?
我正在考虑在我的一个项目中使用dart-protobuf来代替JSON。问题是这个库没有提供任何如何使用它的例子,测试也没有真正的帮助。 我对解析文件的工作方式也有点困惑。 所以我想找一个简单的例子来说明如何在dart中使用这个库。
问题内容: 如何构建接收另一个点(x,y)并复制其值的复制构造函数? 我决定签名:,但我不知道该写些什么… Point类看起来像: 我试过了: 但我几乎可以肯定我会做得更好。 n 问题答案: 不,您的尝试 绝对没问题…(我已经更正了参数类型。) 我很想进行make 和final的操作,并且使该类final的操作,但这是因为我喜欢不可变的类型。其他人肯定有不同意见:) 在继承层次结构上进行克隆比较棘
我有服务器套接字,当我用java访问它时,设置socket.setsolinger(true,0);is工作得很好。我试图用dart实现java客户机代码,但我一直得到一个错误。此外,获取错误也需要时间。飞镖应该是快的! 在java中,我将套接字打开为socketOut=new DataOutPutStream(socket.getOutputStream());和socketIn=new Dat
我必须在docker环境中构建yolact(我使用sagemaker笔记本)。就像这样 而我想经营这个 但我有一个错误: 但是环境支持CUDA。有人知道问题出在哪里吗? 谢谢你。