【问题标题】:dart language: Map<Object,String> how to add new pair?dart 语言:Map<Object,String> 如何添加新对?
【发布时间】:2013-08-11 18:53:41
【问题描述】:

给定:

Map<WebSocket,String> mListUser;
mListUser= new  Map<WebSocket,String>();

根据我现在的理解,添加一个我应该做的新元素:

mListUser[socket]="string";

而不是我得到:

type 'String' is not a subtype of type 'int' of 'index'.

我做错了什么?

【问题讨论】:

  • 基于错误我会说mListUserList,而不是Map。这是您复制的原始真实代码吗?
  • 我在列表之前使用,忘记更改名称,我使用地图。如图所示,我认为我这样做是正确的,我想我用作键的对象有问题,顺便说一下,这与我从 Chathandler 类的 onConnection 获得的 Websocket 相同(来源@987654321 @)
  • 好吧,没有任何进一步的信息,我只能固执地重申:错误消息说,在某处,您正在尝试将字符串分配给名为“index”的变量或参数,它必须是整数。如果这是真实的代码,这个错误甚至可能根本与地图无关。

标签: map dart


【解决方案1】:

也许有帮助。

Map<Object,String> map1= new Map<Object,String>();
Collections c = new Collections(); //some random class

map1[new Collections()]="arg1";
map1[c]="arg2";

map1.forEach((k,v)=>print("out: $k $v"));
print(map1[c]);

得到这个输出:

out: Instance of 'Collections' arg2
out: Instance of 'Collections' arg1
arg2

【讨论】:

  • 我发现或确定了问题。因为我使用'dart:io';而不是导入'dart:html';似乎首先,WebSocket 是一个抽象类,尝试将其用作键是行不通的,至少以这种方式。请注意,在带有 'dart:html' 的项目中;一切都按 Gero 上面的建议进行
【解决方案2】:

也许有帮助

final test = Map<String, int>();
test.putIfAbsent('58', () => 56);

如果key不存在,则放入map中。

【讨论】:

  • 我正在使用 `Map>'(事件是一个随机类)。每次我添加一个新对时,都会正确添加键(DateTime),但列表会在所有键中被替换。有什么帮助吗?有什么想法吗?
猜你喜欢
  • 2019-05-23
  • 1970-01-01
  • 2021-02-05
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 2013-06-16
  • 1970-01-01
  • 2020-07-14
相关资源
最近更新 更多