【问题标题】:What should be the output of the code below? Is this correct?下面代码的输出应该是什么?这个对吗?
【发布时间】:2013-11-28 04:22:11
【问题描述】:

如果我没记错的话,这段代码应该打印出来:

 "dart.core.dynamic"

但会打印以下内容:

 "dynamic"

我的代码:

    import 'dart:mirrors';

    main() {
      var mirror = reflectType(dynamic);
      var symbol = mirror.qualifiedName;
      print(symbol); // -> "dynamic"
    }

【问题讨论】:

    标签: dart dart-mirrors


    【解决方案1】:

    我认为“动态”是一个非常好的结果。

    通常的限定名称以声明库的名称作为类型名称的前缀。 您期望它为“dart.core”添加前缀,这是“dart:core”库的名称,但该库中未声明“动态”(https://api.dartlang.org/docs/channels/stable/latest/dart_core.html),因此使用的前缀是错误的.

    “动态”类型是未在任何库中声明的合成类型 - 没有“类”或“类型定义”声明可以声明行为与“动态”一样的类型。它仅由规范指定,并在编译器和运行时系统内部实现。

    在这种情况下,使用不带前缀的限定名称非常有意义。与“void”相同。

    【讨论】:

      【解决方案2】:

      这是答案How do I get the qualified name from a Type instance, in Dart?

      你忘了

       Symbol symbol = mirror.qualifiedName;
       String qualifiedName = MirrorSystem.getName(symbol);
      

      【讨论】:

      • 我的问题不是关于获取限定名,而是返回的限定名是否正确。即使我使用MirrorSystem.getName (symbol),输出也是"dynamic" 而不是"dart.code.dynamic"
      猜你喜欢
      • 1970-01-01
      • 2016-11-19
      • 2010-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多