不可变性是指在创建数据后无法修改数据。而是通过复制数据进行修改。不可变数据的属性是*引用透明*。
以下代码创建一个 C# 记录类型,使用哈希表对象初始化习惯用法对其进行实例化,然后修改记录的字段: 添加类型-TypeDefinition @' 命名空间 n { 公共...
鉴于这堂课... 公开课测试 { 私有长_id; 公开测试(长id) { _id = id; } } .Net 编译器实际上会将其编译为... 公开课测试 { 私人阅读...
React 建议不要改变状态。我有一组对象,我根据一些事件来操作它们。我的问题是,这样写可以吗: const makeCopy = (arr) => arr.map((...
Set.Has() 不适用于数组,因为它们是可变的。有什么替代方案吗?
我有一个(很多)坐标列表。 坐标列表 = [[1,2], [2,1], [3,5]]; 这个坐标是唯一的,因为我有很多坐标,所以我希望能够快速检查新坐标是否是
为什么1.相等? 1 == true 和 (2**100).equal? (2**100) == 假? 这可以被视为一个错误吗?
MappingProxyType 和 PEP 416 freezedict 之间的区别
虽然frozendict被拒绝,但在python 3.3中公共API中添加了相关的类types.MappingProxyType。 我知道 MappingProxyType 只是底层字典的包装器,但尽管......
Python 中的可选列表参数“list = list or []”
处理可选列表参数的传统方法如下: def func(list_of_vals = None): 如果 list_of_vals 为 None: 值列表 = [] ... 如果以下情况我会受伤(sh...
在 Php 中,我希望我的异常不可变: 只读类 MyImmutableException 扩展了 \Exception { } 正如你所看到的,这是不可能的,它会导致致命错误,因为 \Exception 不是不可变的...
在 Php 中,我希望我的异常不可变: 只读类 MyImmutableException 扩展了 \Exception { } 正如你所看到的,这是不可能的,它会导致致命错误,因为 \Exception 不是不可变的...
我是 F# 新手,我注意到数组仍然是可变的。 这是因为性能影响还是因为固有的 .NET CLR 类型系统? 我知道不可变列表确实存在。 T...
System.InvalidOperationException:集合已修改; ImmutableDictionary 可能无法执行枚举操作
我有一个通过线程重复调用的函数。有时它会随机引发此异常。 System.InvalidOperationException:集合已修改;枚举操作可能不会
我将尝试用一个简短的例子来描述问题。 假设我们有一个代表自定义开关的子可组合项,并且我们希望保持它不可变,因此我们需要传递初始状态......
请考虑以下事项: 类型 ObjectWithNestedArray = { 数组:{名称:字符串}[]; }; const App = () => ; const 父 = () => { const objWithNestedArray = { 数组: [{ na...
我不知道为什么字符串和元组被设计成不可变的;使它们不可变有哪些优点和缺点?
我在理解不可变对象和可变对象的实现时遇到了困难。据我了解,当尝试更改可变对象(例如数组)时,解释器只需
在我的模型中,我有一个用户可以在屏幕上拖动的对象。 结构 ScreenElement: Hashable { var id = UUID() var 偏移量 = CGSize.0 var lastDragAmount = CGSize.zero ...
我使用 PHP 8.3.11 和 Laravel 11.22.0,并且我希望拥有可序列化的不可变 DTO。 到目前为止我最好的想法是: 特质序列化私有 { 公共函数 jsonSerialize() { ...
类常量{ 静态只读 STATES_AND_ACRONYMS = [ [“AA”,“NAME_A”], [“BB”,“NAME_B”], [“抄送”,&q...
我利用 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 就会从容器的内容文件夹中删除。
我有 导入副本 A类: _member_a: 字典[str, str] _member_b:可调用 def set_b(self, func): self._member_b = 函数 def deep_copy(自我): 返回 copy.deepcopy(self) 我...