immer 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
immer 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
授权协议 GPL
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开发厂商
地区 不详
提 交 者 王练
适用人群 未知
收录时间 2016-11-28

软件简介

immer 是一个用 C ++ 编写的可持久化和不可更改的数据结构库。

  • 可持久化意味着修改数据结构时,将保留旧值。

  • 不可更改意味着所有的操作方法都是 const。

对象不会在适当位置修改,但会返回新值。 因为旧值仍然存在并且永远不会改变,所以新值可以透明地保持对它的公共部分的引用。 这个属性被称为结构共享。

举例:

#include <immer/vector.hpp>
int main()
{
    const auto v0 = immer::vector<int>{}
    const auto v1 = v0.push_back(13);
    assert(v0.size() == 0 && v1.size() == 1 && v1[0] == 13);

    const auto v2 = v1.set(0, 42);
    assert(v1[0] == 13 && v2[0] == 42);
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (0)

加载中
更多评论
暂无内容
发表了博客
2018/12/07 19:39

Immer 实战讲解

文章在 github 开源, 欢迎 Fork 、Star ! 前言 Immer 是 mobx 的作者写的一个 immutable 库,核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构,简单易用、体量小巧、设计巧妙,满足了我们对JS不可变数据结构的需求。 无奈网络上完善的文档实在太少,所以自己写了一份,本篇文章以贴近实战的思...

0
0
发表了博客
2019/10/20 09:07

150 行代码,手搓一个 Immer

感谢支持ayqy个人订阅号,每周义务推送1篇(only unique one)原创精品博文,话题包括但不限于前端、Node、Android、数学(WebGL)、语文(课外书读后感)、英语(文档翻译) 如果觉得弱水三千,一瓢太少,可以去...

0
0
发表了博客
2019/05/18 11:38

Angular 学习笔记 immer 使用

https://github.com/immerjs/immer#supported-object-types immer 是用来做 immutable 的. angular 的 change detech 机制, 有时候为了要性能好一些,我们需要用 onPush 然后得配合 immutable 来让 input 触发. 但是呢, immuable.js 写起来很丑, 原生 es6 得写法也不好看. 于是就有了 immer. 早前 immer 完全不支持 clas...

0
0
发表于大前端专区
2019/03/01 20:22

immer.js 实战讲解文档

文章在 github 开源, 欢迎 Fork 、Star ! 前言 Immer 是 mobx 的作者写的一个 immutable 库,核心实现是利用 ES6 的 proxy,几乎以最小的成本实现了 js 的不可变数据结构,简单易用、体量小巧、设计巧妙,满足了...

0
0
发表了博客
2019/10/13 21:13

Copy-on-write + Proxy = ?

感谢支持ayqy个人订阅号,每周义务推送1篇(only unique one)原创精品博文,话题包括但不限于前端、Node、Android、数学(WebGL)、语文(课外书读后感)、英语(文档翻译) 如果觉得弱水三千,一瓢太少,可以去...

0
0
发表于大前端专区
06/25 11:03

不好意思,我又重构了Formily内核

作者:baixuan 溯源 还记得上次我在直播中有提到Formily还存在哪些未解决的问题吗? ArrayList中移动或者删除过程状态交换的问题 如果不使用mutators API是无法自动状态交换的 initialValues里的冗余数据,提交的...

0
0
发表了博客
03/06 23:24

01 Taro_Mall 开源多端小程序框架设计

项目介绍 Taro_Mall是一款多端开源在线商城应用程序,后台是基于litemall基础上进行开发,前端采用Taro框架编写,现已全部完成小程序和h5移动端,后续会对APP,淘宝,头条,百度小程序进行适配。Taro_Mall已经完成了 litemall 前端的所有功能 扫码体验 由于小程序没有认证,只发布了一个预览版,只能加15个人,如有需要,...

0
0
发表了博客
03/04 23:14

Taro_Mall 是一款多端开源在线商城小程序.

介绍 Taro_Mall是一款多端开源在线商城应用程序,后台是基于litemall基础上进行开发,前端采用Taro框架编写,现已全部完成小程序和h5移动端,后续会对APP,淘宝,头条,百度小程序进行适配。Taro_Mally已经完成了 litemall 前端的所有功能 扫码体验 小程序 由于小程序没有认证,只发布了一个预览版,只能加15个人,如有需...

0
0
发表于大前端专区
10/20 14:14

redux最佳实践

redux最佳实践分成三个级别: 基本 状态对象应该不可变 如果状态值要发生变化,则reducer里面应该返回全新的状态对象。这也是redux为了提升性能,采用浅比较的策略的基本要求。 Reducers 不要有副作用 reducer里面...

0
0
发表了博客
2019/01/16 16:08

idea springMVC 登陆界面

参考博客https://www.cnblogs.com/wormday/p/8435617.html spring在默认包下启动不了 dispatch-servlet.xml中 <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.form</url-pattern> </servlet-mapping> 此处可以将<url-pattern>*.form</url-pattern>改为<url-pattern>/</url-pattern...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
0 评论
2 收藏
分享
返回顶部
顶部