我写的代码可能有点长,但是,我想知道是否有错误,所以我可以将它提交给dartbug.com.如果没有错误,我想知道我做错了什么.
代码的想法是将点的位置与网格同步(分别为Square类和Grid类).
Square.onPosChange是一个发送前一个位置的Stream.
当一个正方形被添加到Grid(Grid.add)时,就会对onPosChange进行订阅,它所做的就是改变Grid中正方形的位置; 首先它将它从前一个位置移除(只是指定null),然后将其分配给当前位置.
当我希望前一个位置为空时,我的测试失败了.现在下面是代码,并注意我认为可能是问题的注释行.
编辑:以防万一,这不是愚人节问题:P
import 'dart:async';
import 'package:unittest/unittest.dart';
void main() {
test('grid',(){
Square s = new Square(3, 5);
Grid g = new Grid(10,10);
g.add(s);
expect(g._cols[3].squares[5], s);//pass
s.x = 6;
expect(g._cols[6].squares[5], s);//pass
expect(g._cols[3].squares[5], isNull);//fails
});
}
class Grid{
List<GridCol> _cols;
int w, h;
Grid(this.w, this.h){
_cols = new List<GridCol>.filled(w, new GridCol(h));
}
add(Square square){
if(!isOut(square)){
//add square to grid
_cols[square.x].squares[square.y] = square;
//listen to onPosChanged event stream
square.onPosChanged.listen((Point previousPos){
//remove from previous position
_cols[previousPos.x].squares[previousPos.y] = null;
//if is …Run Code Online (Sandbox Code Playgroud) 如何使用 Mirrors API 获取 ClassMirror?我尝试使用顶级reflect()函数,但这需要一个类实例,而不是一个类作为参数。
飞镖代码:
main() {
print(PPP.name);
print(CCC.name);
}
class PPP {
static String name = "PPP";
}
class CCC extends PPP {
}
Run Code Online (Sandbox Code Playgroud)
它打印:
PPP
Unhandled exception:
No static getter 'name' declared in class 'CCC'.
NoSuchMethodError : method not found: 'name'
Receiver: Type: class 'CCC'
Arguments: [...]
Run Code Online (Sandbox Code Playgroud)
因此,无法在Dart中访问父类的静态变量吗?
覆盖以下三个生命周期方法WebComponent:created(),inserted()和之后removed(),我可以看到前两个被一致地调用但removed()从未调用过.有什么特别的东西需要做才能removed()被调用吗?或者它根本就没有被称为?
以下 Python 语法的 Dart 等效项是什么,用于仅导入模块的一部分?这将导入刚刚urlopen从urllib2模块。
from urllib2 import urlopen
Run Code Online (Sandbox Code Playgroud)