【问题标题】:Directory comparison not working in Dart?目录比较在 Dart 中不起作用?
【发布时间】:2019-11-19 07:25:51
【问题描述】:

为什么目录比较在 Dart 中不能按预期方式工作?

import 'dart:io';

void main() {
  Directory d = Directory('/kek');
  Directory e = Directory('/kek');
  print(d==e);  // false
  print(d.hashCode);  // 123456
  print(e.hashCode);  // 654321
}

【问题讨论】:

    标签: dart dart-io


    【解决方案1】:

    当我阅读 Directory 对象的文档时,hashCodeoperator== 方法只是从 Object 继承而来,因此没有特殊的实现会导致两个不同的 Directory 对象在它们指向相同时比较相等地点。

    这将难以实施。 hashCode是否应该规范化相对路径和包含“。”的路径和 ”..”?它应该遵循符号链接吗?有多个硬链接的文件呢?

    【讨论】:

    • 所以比较的唯一方法是使用相对/绝对路径,但开发者必须确保他只使用一种类型?
    • 我已经习惯了在 Python 中正常工作,所以我很惊讶在 Dart 中没有实现。
    • 我是说如果你需要“同目录”的概念,也许你应该重新考虑你的设计。
    • 你可能是对的。我正在尝试将目录列表重写为嵌套的地图,然后将其转换为嵌套的 Flutter ListViews。但我认为 Dart 中没有 Map.addRecursively 和 Map.forEachRecursively,因为它在 Python 中,所以我需要找到不同的方法。
    猜你喜欢
    • 2013-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2018-05-18
    相关资源
    最近更新 更多