immutability 相关问题

不可变性是指在创建数据后无法修改数据。而是通过复制数据进行修改。不可变数据的属性是*引用透明*。

SwiftUI 通过手势拖动数组中的对象

在我的模型中,我有一个用户可以在屏幕上拖动的对象。 结构 ScreenElement: Hashable { var id = UUID() var 偏移量 = CGSize.0 var lastDragAmount = CGSize.zero ...

回答 1 投票 0

获取可序列化的不可变对象的最佳方法

我使用 PHP 8.3.11 和 Laravel 11.22.0,并且我希望拥有可序列化的不可变 DTO。 到目前为止我最好的想法是: 特质序列化私有 { 公共函数 jsonSerialize() { ...

回答 1 投票 0

如何安全地过滤具有唯一值和键的不可变数组?

类常量{ 静态只读 STATES_AND_ACRONYMS = [ [“AA”,“NAME_A”], [“BB”,“NAME_B”], [“抄送”,&q...

回答 1 投票 0

何时在 MS Graph API 中使用不可变 ID

我利用 ms graph 创建了一系列方法,这些方法通常返回带有 id 的电子邮件对象或带有 id 的文件夹等。一些示例如下: 公共异步任务 我利用 ms graph 创建了一系列方法,这些方法通常返回带有 id 的电子邮件对象或带有 id 的文件夹等。一些示例如下: public async Task<Models.Email?> SendEmailAsync(string mailBox, AddEmailDTO email) { var requestBody = new Message { ToRecipients = email.To?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), CcRecipients = email.Cc?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), BccRecipients = email.Cc?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), Subject = email.Subject, Body = new ItemBody { ContentType = BodyType.Html, Content = email.Body, } }; var result = await _graphServiceClient.Users[mailBox].Messages.PostAsync(requestBody, rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); if(result != null) { await _graphServiceClient.Me.Messages[result.Id].Send.PostAsync(rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); return await GetEmailAsync(mailBox, result.Id!); } else { return null; } } public async Task<Models.Email?> SendReplyToEmailAsync(string mailBox, string messageId, AddEmailDTO email) { var requestBody = new CreateReplyPostRequestBody { Message = new Message { ToRecipients = email.To?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), CcRecipients = email.Cc?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), BccRecipients = email.Cc?.Select(contact => new Recipient { EmailAddress = new Microsoft.Graph.Models.EmailAddress { Address = contact.EmailAddress, Name = contact.Name } }).ToList(), Subject = email.Subject, Body = new ItemBody { ContentType = BodyType.Html, Content = email.Body, }, }, }; var result = await _graphServiceClient.Users[mailBox].Messages[messageId].CreateReply.PostAsync(requestBody, rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); if(result != null) { await _graphServiceClient.Users[mailBox].Messages[result.Id].Send.PostAsync( rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); return await GetEmailAsync(mailBox, result.Id!); } else { return null; } } public async Task CopyEmailByFolderIdAsync(string mailBox, string messageId, string folderId) { var requestBody = new CopyPostRequestBody { DestinationId = folderId, }; var result = await _graphServiceClient.Users[mailBox].Messages[messageId].Copy.PostAsync(requestBody, rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); } public async Task MoveEmailByFolderIdAsync(string mailBox, string messageId, string folderId) { var requestBody = new MovePostRequestBody { DestinationId = folderId, }; var result = await _graphServiceClient.Users[mailBox].Messages[messageId].Move.PostAsync(requestBody, rc => { rc.Headers.Add("Prefer", "IdType=\"ImmutableId\""); }); } 我担心的是,我稍后会使用这些 ID,例如,如果我发送一封电子邮件,然后将其移动到文件夹中。那么,我是否应该将 ImmutableId 标头添加到我发出的每个请求中,如这些示例所示?默认情况下这些不可变 id 是否存在,并且此标头只是将常用 id 替换为不可变 id?或者是否需要先使用不可变 ID 创建资源,以便稍后可以通过它访问? 那么我是否应该将 ImmutableId 标头添加到我发出的每个请求中,如这些示例所示? 如果您要存储和使用任何邮件 ID,那么您应该在所有请求中使用 ImmutableId,这样就不会有任何性能损失 默认情况下这些不可变 id 是否存在,并且此标头只是将常用 id 替换为不可变 id?或者是否需要先使用不可变 ID 创建资源,以便稍后可以通过它访问? 邮件在 Exchange 存储中的存储方式是该对象只有一个实例(每个邮箱),然后通常您获得的 id 将来自邮件所在容器(文件夹)的内容表。您请求 ImmutableId,您将获得一个标识符,API (Microsoft Graph) 可以使用该标识符来获取该项目,无论其容器位于哪个容器中,只要它仍在同一个邮箱中即可。有一个翻译 https://learn.microsoft.com/en-us/graph/api/user-translateexchangeids?view=graph-rest-1.0&tabs=http 操作,允许您将常规 id 转换为 ImmutableId一个,但只有在常规 ID 有效时才有效(即使 ImmutableId 本身不会改变),例如,一旦您移动一条消息,该常规 ID 就会从容器的内容文件夹中删除。

回答 1 投票 0

Python 函数是不可变的吗?

我有 导入副本 A类: _member_a: 字典[str, str] _member_b:可调用 def set_b(self, func): self._member_b = 函数 def deep_copy(自我): 返回 copy.deepcopy(self) 我...

回答 1 投票 0

如何从范围创建 Vec 并对其进行洗牌?

我有以下代码: 外部板条箱兰特; 使用 rand::{thread_rng, Rng}; fn 主() { 让 mut vec: Vec = (0..10).collect(); 让 mut 切片:&[u32] = vec.as_mut_slice();

回答 3 投票 0

支持不可变集合的集合初始化语法 - 方法的 init 修饰符?

我需要实现一个支持集合初始化语法的不可变集合。问题是为了支持集合初始化语法,集合必须提供适当的...

回答 2 投票 0

python获取linux文件不可变属性

我可以使用 os.stat(pathname) 来获取路径名的权限,mtime,atime...... 但是,我有一个具有“+i”属性的文件,您可以通过以下方式查看它: lsattr /tmp/test.py 有没有办法知道是否

回答 3 投票 0

Django/PostgreSQL 生成字段错误的解决方法是什么

使用 PostgreSQL 定义GenerateField时,遇到以下错误并不罕见:django.db.utils.ProgrammingError:生成表达式不是不可变的。 提到这个错误...

回答 1 投票 0

Racket 可变哈希到不可变哈希

我正在使用过程哈希集来设置哈希值?。似乎要求哈希值是不可变的?到目前为止,我找不到更好的方法将可变哈希转换为不可变哈希...

回答 2 投票 0

什么可以防止 JavaScript 原语发生变异?

在C中,声明并初始化原语后,我们可以访问存储原语的内存地址并直接修改其值。然而在 JavaScript 中据说 primit...

回答 1 投票 0

Java List.of() 作为 HashMap 中的键?

我知道,一般来说,您应该只使用不可变对象作为哈希映射的键,因为如果它们的地址或内容发生变化,那么哈希就会中断。这就是正常列表的原因之一

回答 1 投票 0

Kotlin 支持字段类型错误

视图模型 私人 val _wordPressPostsState = Channel() val wordPressPostList:列表 字段 = mutableListOf...

回答 1 投票 0

EnumSet 的不可变版本

我找不到 EnumSet 的不可变版本。 两个问题: 我可以在普通的 Guava ImmutableSet 中使用枚举吗? 如果可以的话,使用 ImmutableSet 而不是 Enum 有什么好处/缺点......

回答 2 投票 0

如何将 Kotlin 支持字段与 Channel 和 Flow 一起使用?

我正在使用 Kotlin 2.0 中引入的新支持字段功能,但是当我在不是某个或另一个的超类/子类的数据类型上使用它时遇到一些问题。 优先...

回答 1 投票 0

为什么`Option::map`适用于不可变数据,但不适用于可变数据

为什么下面示例中的不可变版本可以工作,但可变版本无法编译并出现错误 error: Lifetime may not live much long? 特质汽车{ fn 喇叭(&self); } 圣...

回答 1 投票 0

为什么`Option::map`适用于不可变数据,但不适用于可变数据

为什么下面示例中的不可变版本可以工作,但可变版本无法编译并出现错误 error: Lifetime may not live much long? 特质汽车{ fn 喇叭(&self); } 圣...

回答 1 投票 0

使用 redux-toolkit 改变状态的任何技巧

我正在使用 redux-toolkit 和 React。 我知道基本的 redux(不使用 redux-toolkit)不允许改变原始状态。这就是为什么我选择 redux-toolkit 来做到这一点。然而,我不能

回答 1 投票 0

使用FreeMarker更新hashmap有哪些方法?

我最近开始研究ftl FreeMarker。 我使用#assign 创建了一个哈希图。 更新此 hashMap 的值的推荐方法是什么? 数据结构(地图、列表等)是否不变...

回答 1 投票 0

使用 Builder 模式创建的对象是否存在不可变的约定?

根据《设计模式:可重用面向对象软件的元素》一书,: 构建器模式将复杂对象的构造与其表示分离,以便相同的

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.