小编Moh*_*bor的帖子

在Dart-lang中避免物体变异的方法有哪些?

如果我们将以下代码段作为示例:

main() {
    List<int> array = [1, 2, 3, 4];
    List<int> newArray = change(array);

    print(array); // [99, 2, 3, 4]
    print(newArray); // [99, 2, 3, 4]
    print(newArray == array); // true
}

change(List<int> array) {
    var newArray = array;
    newArray[0] = 99;
    return newArray;
}
Run Code Online (Sandbox Code Playgroud)

原始数组变异了.我期待通过将数组(对象)传递给更改函数并为其分配一个新变量,我可以避免变异.我知道built_collection库似乎是不可变集合的主要选择.是否存在任何原生方式的核心库,允许深度冻结或防止副作用(在另一个函数内的操作)?

object immutability mutation dart

6
推荐指数
2
解决办法
323
查看次数

除了地图和向量之外,还有其他在Clojure中使用get的用途吗?

到目前为止我所知道的用途是向量:

(get [1 2 3 4] 2) ; => 3
Run Code Online (Sandbox Code Playgroud)

并在地图上:

(get {:a "a" :b "B" :c "c"} :c) ; => "c"
Run Code Online (Sandbox Code Playgroud)

从文档中可以看出:

clojure.core/get([map key] [map key not-found])

如果key不存在,则返回映射到key,not-found或nil的值.

dictionary get vector clojure

2
推荐指数
1
解决办法
127
查看次数

标签 统计

clojure ×1

dart ×1

dictionary ×1

get ×1

immutability ×1

mutation ×1

object ×1

vector ×1