side-effects相关内容
C++20标准规定函数调用,7.6.1.3/8: 参数的初始化(包括每个关联值计算和副作用)相对于任何其他参数的初始化是不确定的。 不确定排序(相对于非排序)可确保影响相同内存区域的副作用不是未定义的行为。Cp首选项gives the following examples: f(i = -2, i = -2); // undefined behavior until C++17
..
列表控件被定义为资源上的单选. 问题 1 我想在 CListCtrl 的第一列的标题上设置一个复选框.在 OnInitDialog 我有 m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);CString s;s.LoadString(IDS_CO
..
我在 C How to Program 一文中看到了一个语句: “具有副作用的表达式(即,变量值被修改)不应传递给宏,因为宏参数可能会被多次计算.". 我的问题是什么是具有副作用的表达式,为什么不应该将它们传递给宏? 解决方案 经典例子是计算两个值的最大值的宏: #define MAX(a, b) ((a) > (b) ? (a) : (b)) 现在让我们像这样“调用"宏:
..
我一直试图围绕函数式编程进行一段时间.我查阅了 lambda 演算、LISP、OCaml、F# 甚至组合逻辑,但我遇到的主要问题是 - 你如何做需要副作用的事情,例如: 与用户互动, 与远程服务通信,或 使用随机抽样处理模拟 不违反纯函数式编程的基本前提,即对于给定的输入,输出是确定性的? 我希望我说的有道理;如果不是,我欢迎任何帮助我理解的尝试.提前致谢. 解决方案
..
根据 副作用 的维基百科条目,引发异常构成副作用.考虑这个简单的 Python 函数: def foo(arg):如果不是 arg:raise ValueError('arg 不能为 None')别的:返回 10 使用 foo(None) 调用它总是会遇到异常.同样的输入,同样的输出.它是引用透明的.为什么这不是纯函数? 解决方案 只有当您观察到异常并根据异常做出改变控制流的决定时,才
..
列表控件被定义为资源的单一选择. 问题 1 我想在我的 CListCtrl 的第一列的标题上有一个复选框.在 OnInitDialog 我有 m_list.SetExtendedStyle(m_list.GetExtendedStyle() | LVS_EX_CHECKBOXES | LVS_EX_FULLROWSELECT);CString s;s.LoadString(IDS_
..
我一次又一次地读到有效这个词,但我仍然无法清楚地定义它的含义.我假设正确的上下文是有效的计算,但我也看到了术语有效的值) 我曾经认为有效意味着有副作用.但是在 Haskell 中没有副作用(除了某种程度上的 IO).仍然到处都是有效的计算. 然后我读到 monad 用于创建有效的计算.我可以在 State Monad 的上下文中理解这一点.但是我没有在 Maybe monad 中看到任
..
我明白除了 composable 中的 composition 行为之外,所有其他行为都是副作用.那么,对于 TextField,更改 onValueChange 中的 TextFieldValue 是否有副作用?另外,在 composable 中显示 Toast 消息是否有副作用? 解决方案 让我们先了解一些关于函数式编程的术语 Idempotent - 意味着调用相同的函数 n
..
我对 Vue.js 并不陌生,但我正在再次浏览文档,试图找出我第一次错过的任何内容.我在使用计算属性的基本示例部分中看到了这个声明: 您可以像普通属性一样将数据绑定到模板中的计算属性.Vue 知道 vm.reversedMessage 依赖于 vm.message,所以它会在 时更新任何依赖于 vm.reversedMessage 的绑定vm.message 变化.最好的部分是我们以声明方式
..
维基百科说: 在计算机科学中,如果操作、函数或表达式在其本地环境之外修改某些状态变量值,则称其具有副作用,也就是说具有除了向操作的调用者返回一个值(主要效果)之外,还有一个可观察的效果. 但是我们如何访问一个变量在其本地环境之外,有没有人能通俗地解释一下这种情况、副作用、主效应和序列点? 解决方案 一个函数是(应该)一个黑盒子,其中返回值,或者通过引用传递的变量的值,应该是唯一
..
我有一个芹菜重试任务,我想测试它是否重试直到成功.使用 mock 的 side_effect,我可以在一定数量的执行中失败,然后通过 None,清除副作用.但是,任务调用的方法在那个时候不会执行,它只是没有异常.有没有办法清除副作用,并且仍然让被模拟的方法正常执行? 我可以测试它被称为“x"次(即重复直到成功),然后在单独的测试中,断言它做了应该做的事情,但想知道是否有办法做到这两者一个测试
..
在Eclipse中调试Java代码时,如果单击变量名之一,则将打印该对象.对象的toString()方法用于打印它.如果某些toString方法有副作用,而我单击该类型的变量,是否会应用其toString的副作用(并且毫无疑问会弄乱一切)? 解决方案 我认为您回答了自己的问题.每当您在调试中或以其他方式调用 toString 时,都会发生所有副作用.这就是为什么您应该避免在toString
..
我正在研究 constexpr 函数的一些相当奇怪的代码覆盖结果(我使用的代码覆盖工具无法检测编译时调用),并注意到一些constexpr 函数被称为 runtime 函数,如果未存储函数调用的结果,则称为 . 似乎,对于 constexpr 函数或方法,如果将调用结果存储在(在运行时变量[emphasis !!!]或 constexpr 中)变量),则该调用是编译时调用(只要参数是编译时)
..
这不是 Python中的lambda表达式内的赋值的重复项,即,我不是询问如何诱使Python分配lambda表达式. 我有一些λ微积分背景.考虑以下代码,它 看起来Python非常愿意在lambda中执行副作用 表达式: #!/usr/bin/python def applyTo42(f): return f(42) def double(x): return x
..
是否有针对包含副作用的Java/JVM语言方法编写javadocs的标准或最佳实践? 我定义了一个void方法,该方法修改了方法参数之一,但不知道如何记录实际的返回值(因为没有实际的返回值). /** * @param obj - reference object * @return obj - obj.name is changed to 'hello' //TODO fig
..
给予 pure id v = v 持有,pure可以做任何可观察且不违反法律的事情吗? 如果我定义一个封装IO的类型并说产生一个新线程,那么GHC可以自由地优化它吗? 编辑:我终于意识到问题实际上是关于拥有非法IO实例的后果... 解决方案 GHC对类型类定律一无所知(与Idris或Coq不同),这些定律仅作为文档和编程约定存在.因此,实例可能是合法的,也可能
..
在《函数式编程》一书中,作者提到了以下副作用. 修改变量 就地修改数据结构 在对象上设置字段 引发异常或因错误而停止 打印到控制台或阅读用户输入 读取或写入文件 在屏幕上绘画 我只是想知道如果有副作用,怎么可能编写纯功能程序而无需读取或写入文件.如果是的话,功能界实现这一目标的通用方法是什么? 谢谢, 穆罕默德(Mohamed) 解决方案 正确回答此问题可能需
..
开始学习Haskell之后,即使阅读了大量文档,Haskell还是有些我不理解的地方. 我了解要执行IO操作,您必须使用将值包装在一种“黑匣子"中的"IO monad",因此使用IO monad的任何功能仍然是纯功能.好的,很好,但是IO操作实际上在哪里发生? 这是否意味着Monad本身不是纯粹的功能?还是在IO中实现了IO操作(例如用C语言实现),并将其“嵌入"在Haskell编译器
..
我正在尝试在代码中实现F# coding conventions页面上的出色建议 https://docs.microsoft.com/en -us/dotnet/fsharp/style-guide/conventions . Use classes to contain values that have side effects部分特别有趣.它说 There are many
..
我已经阅读了 C ++:完整的参考书预订了以下内容 即使通过普通的 按值调用参数传递机制将对象传递给函数,从理论上讲,该机制可以保护 并隔离调用参数,但侧面$ b仍然可能可能会影响 参数的对象发生$ b效果。例如,如果用作参数的对象分配了 内存并在销毁该内存时释放该内存,则当析构函数为 时,该函数内部的本地副本 将释放相同的内存。这将损坏原始对象,并实际上使 失去作用。
..