首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否检查Map中的连续值?

是否检查Map中的连续值?
EN

Stack Overflow用户
提问于 2019-03-20 20:47:12
回答 1查看 101关注 0票数 0

我正在创建一个聊天应用程序,如果用户连续发送多条消息,我不想一遍又一遍地显示用户头像。

用户消息存储在Map中,其中最新的消息具有索引0。为了检查index上的消息是否与之前的消息是由同一个人发送的,我使用以下方法:

代码语言:javascript
复制
bool _sameUser () {
  if (index > 0 && map != null && map[index + 1] != null && map[index + 1]['fromUser’] == map[index][‘fromUser’]) {
    return true;
  } else {
    return false;
  }
}

但是,这不适用于最新的消息,或者如果有两条以上的消息来自同一用户。我如何重写条件,使其按预期工作?

谢谢!

更新:

在尝试@Marcel回答并测试更多之后,我发现了另一个问题,可能导致了这个问题。

即使在发送消息2时,map[index + 1] != null也不为真。只有在发送消息3之后才为真。

我在函数中使用条件进行测试:

代码语言:javascript
复制
if (map[index + 1] != null) {
print('!=null');
}
EN

回答 1

Stack Overflow用户

发布于 2019-03-20 22:39:55

除非您测试index > 0,否则您的代码没有理由不能用于索引0。通过删除它,它应该工作得很好:

代码语言:javascript
复制
bool _sameUser () {
  assert(index >= 0);
  assert(map != null);
  return map[index + 1] != null && map[index + 1]['fromUser'] == map[index]['fromUser'];
}

因为我假设index永远不应该小于0,并且map永远不应该是null,所以我将一些条件代码移到了assert语句中。另外,因为您的if-expression是一个布尔值,所以可以直接返回它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55261128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档