问题标签 [side-effects]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
281 浏览

c - 在c中使用运算符'->'的奇怪副作用

在我用 C 编写的代码中使用运算符 '->' 时,我得到了这种奇怪的副作用。我使用 -> on 的指针被更改为有一些垃圾。

进一步来说:

我有以下结构:

当我使用以下内容时ListGetFirst(),我会得到有线行为:

当我使用调试器时,我发现指针 list->head 在标记的上述行上发生了变化。

我真的不知道为什么,我不知道'->'会产生副作用

提前致谢

0 投票
1 回答
2468 浏览

functional-programming - D中的纯函数式编程

在我看来,功能纯度的力量在于可以验证深层代码路径无副作用。人们对可以在纯说明符内的代码树的规模有什么经验,代码重用的水平如何?

我发现了几件事:

std.algorithm大多数情况下没有标记为pure,但可能在很大程度上是纯的,或者通过要求实例化函数或 mixin 纯度的纯算法版本,或者纯度说明符本身是静态多态的。
像这样有用的转换器to!string( someInt )目前并不纯。

用户定义的结构似乎有问题(如下图所示):
1. 嵌套结构上的纯析构函数
2. 即使在非嵌套结构上也有纯 postblit 函数

以下代码目前在 DMD 2.052 win 32-bit 上给出了多个错误

0 投票
2 回答
1112 浏览

ocaml - OCaml 中的引用透明性

我试图协调引用透明度的定义与 OCaml 如何处理多态类型和副作用。我在https://web.archive.org/web/20120729232358/http://www.csc.villanova.edu/~dmatusze/resources/ocaml/ocaml.html上读到

如果定义的含义不依赖于它所在的上下文,则称其具有引用透明性。OCaml 中的函数具有引用透明性,即更改上下文(其他变量和其他函数)不会改变您所使用的任何函数的含义已经定义了。当您调试程序时,这一事实可能至关重要,因为您可能会相当频繁地重新定义函数。

但是按照我的理解,这在 OCaml 中是不可能的,因为在返回输入函数的任何内容之前,可能会执行一大堆副作用(例如写入文件和执行其他计算)。

您可能有一个函数f : string -> string,因此f "a"不等于f "a"。我们可以将一些副作用表达式放入函数体中,这些表达式在 的类型描述中完全不可见f

例如f,可以定义为返回某个文件的第一行。在上下文中的某个地方可能有一个函数f被更改,这会影响第一行f返回的内容。或者更糟糕的是,上下文中的某些函数可能会删除f取决于哪个文件f未定义的文件。

那么 OCaml 是参照透明的还是我遗漏了什么?

0 投票
1 回答
982 浏览

vb.net - 在类中定义结构的副作用

一个新手 vb.net 问题

在类中定义结构(将其命名为 X)并在该类中创建类型为 X 的属性有什么副作用?

0 投票
6 回答
3101 浏览

javascript - 封闭外部 jQuery 脚本

我有一个外部 JavaScript 文件,将在包含许多其他脚本的页面上使用。我的脚本涉及很多监听事件的 jQuery,并且根据设计,我声明了许多全局变量。我一直在阅读最佳实践文章,其中有很多关于“污染全局命名空间”和无意的脚本交互的说法。

封装(封装?)我的 JavaScript 文件的最佳方法是什么,以便:

  • 我仍然可以访问外壳之外的一些变量
  • jQuery 事件监听器将正常运行

我无权透露代码,因此即使是一般性的回复也值得赞赏。此外,欢迎提供有关使脚本不易受到页面上其他脚本攻击的任何其他提示。

我找到了常规 JavaScript 的附件样式,但是使用 jQuery 会使这复杂化吗?

0 投票
6 回答
4302 浏览

c# - C# 范式:列表的副作用

我正在努力加深对副作用以及如何控制和应用它们的理解。

在以下航班列表中,我想设置满足条件的每个航班的属性:

在这个表达式中,我的列表有副作用。根据我有限的知识,我知道前任。“LINQ 仅用于查询”和“列表只有少数操作,分配或设置值不是其中之一”和“列表应该是不可变的”。

  • 我上面的 LINQ 语句有什么问题,应该如何更改?
  • 我在哪里可以获得关于我上面描述的场景的基本范式的更多信息?
0 投票
5 回答
202 浏览

c++ - Placement-new 是否引入了序列点?

考虑以下代码行:

如果构造函数T()抛出异常,是否p保证已经自增?

0 投票
2 回答
990 浏览

.net - 在 F# 中制作纯 printfn/IO

网上似乎没有太多关于确保函数在 F# 中保持纯正的内容。

举个例子,有没有办法在 F# 中使 printfn/IO 成为纯的?

0 投票
2 回答
647 浏览

python - 具有副作用的 Python 闭包

我想知道 Python 中的闭包是否可以操作其命名空间中的变量。您可能会将此称为副作用,因为状态正在闭包本身之外进行更改。我想做这样的事情

显然我希望做的更复杂,但这个例子说明了我在说什么。

0 投票
2 回答
4075 浏览

java - 构建hibernate实体时如何处理双向关系?

我想用 JPA/Hibernate 对两个实体、一个组和一个帐户之间的关系进行建模。一个帐户可以有多个组,但反之则不行,因此我们在帐户和组之间建立了 OneToMany 关系。我的工作同事建议对实体进行建模,AccountGroup喜欢

我现在的问题是addToAccount关于Group. 根据我的工作同事的说法,这种方法是必要的,因为我们需要从双方更新两个实体之间的双向关系,以确保两个实体的内存模型一致。

但是我相信在构造函数中调用该方法addToAccount不是一个好主意,因为

  1. Listof s 是延迟获取的Group,因此调用该方法 addToAccount需要一个打开的事务。所以 Group只能在打开的事务中调用构造函数。在我看来,这是一个非常烦人的限制。

  2. 作为构造函数的参数给出的Account对象Group由构造函数更改。在我看来,这是构造函数的一个令人惊讶的副作用,Group 不应该发生。

我的建议是更好地使用一个简单的构造函数,比如

并手动处理双向关系。但也许我错了。在构建休眠实体时,是否有一种常见的方式来处理双向关系?