【问题标题】:Map values is private when called from class instance从类实例调用时,映射值是私有的
【发布时间】:2018-02-07 12:48:04
【问题描述】:

我的 Dart 代码给了我这个错误:

NoSuchMethodError: Class '_InternalLinkedHashMap' has no getter 'myKey'

这是我的代码:

Class A{
        Map a = {
             "myKey": "Dont privatise this value"};
}
Main(){
     A b = new A();
     print(b.a.myKey);  // Error
     print(b.a['myKey']); // Error too..
}

我已经搜索过这个问题,但我不明白为什么编译器不想从地图上给我myKey。但是我已经在 Dart 控制台中检查了(通过类构造函数中的 print 方法),并且我确定键 myKey 在地图中。

【问题讨论】:

    标签: dart


    【解决方案1】:

    在 Dart 中,您不能使用点符号访问 Map 值。评估b.a.myKey 是错误的,因为Maps 没有myKey getter。但是,b.a['myKey'] 不应该是一个错误。快速检查 dartpad 表明它可以工作:https://dartpad.dartlang.org/10cdcbdc3730cfec175174e675320e54

    【讨论】:

    • 确实你是对的,当我使用语法 ["myKey"] 时出现了不同的错误,我以为我真的检查了所有内容,非常感谢 Harry
    • 请原谅,但您知道先使用该语法的替代方法吗?
    • 你可以做class A { final String myKey = "Dont privatise this value"; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 2022-01-15
    • 2010-09-30
    • 2012-01-26
    • 2010-09-06
    • 1970-01-01
    • 2017-06-11
    相关资源
    最近更新 更多