飞镖规格说明:
已知类型信息反映了运行时对象的类型,并且可能始终通过动态类型检查构造(其他语言中的instanceOf,casts,typecase等的类比)来查询.
听起来不错,但是没有instanceof类似的操作员.那么我们如何在Dart中执行运行时类型检查?有可能吗?
如何在Dart语言中确定某个对象是否属于某个类?
我正在寻找以下内容:
if (someObject.class.toString() == "Num") {
...
}
Run Code Online (Sandbox Code Playgroud)
什么是返回值类型?它必须是一个字符串吗?
镜像库已经上下,现在似乎很快就会发生变化,因为我发现的一件事根本就没有显示出来.
是否有Dart的REPL进行试验?
我尝试在Dartium的devtools中输入dart代码,但也没有用.
所以我找不到一种简单的方法来玩飞镖中的各种API.
像Dart这样的语言使用基于镜像的反射,所以简单来说,就像你在C#或Java中看到的那样,这种实现和传统反射之间有什么区别.
更新:我发现了Gilad Bracha关于Newspeak中基于Mirror的反射的这个优秀(有点古怪)的视频. http://www.hpi.uni-potsdam.de/hirschfeld/events/past/media/100105_Bracha_2010_LinguisticReflectionViaMirrors_HPI.mp4 (镜像东西从7:42开始)
reflection programming-languages language-design dart dart-mirrors
我有一个用元数据注释的Dart类:
class Awesome {
final String msg;
const Awesome(this.msg);
String toString() => msg;
}
@Awesome('it works!')
class Cool {
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否Cool有注释,如果有,请注意.我怎么做?
在dart中是否可以从字符串中实例化一个类?
例如:
var myObject = window[classNameString];
Run Code Online (Sandbox Code Playgroud)
id myclass = [[NSClassFromString(@"MyClass") alloc] init];
Run Code Online (Sandbox Code Playgroud) 我有一个实例Type,但我想要它的完全限定名称.我怎样才能做到这一点?我知道我必须使用Mirrors(Dart的反射库).
可以在Dart中将类类型作为变量传递?
我想做的事情如下:
class Dodo
{
void hello() {
print("hello dodo");
}
}
void main() {
var a = Dodo;
var b = new a();
b.hello();
}
Run Code Online (Sandbox Code Playgroud)
在python类似的代码将工作得很好.在Dart中,我new a()抱怨错误,这a不是一种类型.
可以使用类对象作为变量吗?如果没有,推荐的工作是什么?
就像在PHP中的Dynamic类方法调用中的问题一样,我想在Dart中执行此操作.
var = "name";
page.${var} = value;
page.save();
Run Code Online (Sandbox Code Playgroud)
那可能吗?
有Klass静态方法的类fn1
class Klass {
static String fn1() => 'hello';
}
> Klass.fn1(); // hello
Run Code Online (Sandbox Code Playgroud)
但是当Klass分配给一个变量时,调用该方法fn1失败
var k = Klass;
> k.fn1() // "Unhandled exception: Class '_Type' has no instance method 'fn1'.
Run Code Online (Sandbox Code Playgroud)
不太清楚这里发生了什么