closures 相关问题

闭包是一个第一类函数,它引用(关闭)变量来自定义它的作用域。如果闭包在其定义范围结束后仍然存在,则它关闭的变量也将继续存在。

为什么传递给map()的闭包不带引用,而传递给filter()的闭包带引用?

传递给map()的闭包不接受引用,而传递给filter()的闭包在Rust中接受引用。大多数迭代器适配器都会引用。 map() 这样做有什么原因吗...

回答 2 投票 0

上下文变量应该在顶层模块级别创建,而不是在闭包中创建

在Python标准库模块contextvars的文档中,指出: 上下文变量应该在顶层模块级别创建,而不是在闭包内创建。 然而,我不...

回答 1 投票 0

在 Swift 中使用 @autoclosure:它的行为可以像重载函数吗?

我有一个使用@autoclosure的函数。有没有办法让 @autoclosure 的行为与重载函数类似,这样它就会自动知道哪种语法适合像我这样的变量......

回答 1 投票 0

在 Angular 中,我们有什么方法可以使用闭包概念吗?

我浏览了资源,发现使用 getter 方法从类访问值是一种闭包形式。由于资源是人工智能生成的,我正在验证这是否确实......

回答 1 投票 0

从闭包返回一个值到主方法

我的关闭如下: 公共函数创建(){ DB::交易(函数(){ 返回“被调用的函数” }); 如何从创建返回“函数调用”?

回答 3 投票 0

关于 Rust 中闭包借用的问题

我正在尝试使用 Rust 中的示例程序来理解闭包,如下所示。但我在下面的“定义关闭之后”行中遇到了错误。 让 mut list = vec![1, 2, 3]; 打印!(“

回答 1 投票 0

Swift 在调试和发布模式下的行为不同

不确定这是否是 Swift、XCode 或 Alamofire 的问题,但我在我的混合 Swift/Objc 应用程序中的不同位置发现了奇怪的行为。它只发生在用 Swift 编写的部分......

回答 4 投票 0

Blazor 循环、闭包和绑定

我将其分解为一个简单的示例,循环遍历一些内容,但将其分解为级别。 我正在内部循环中实例化本地副本,但这似乎不起作用。 当您尝试...

回答 2 投票 0

在 PHP 中,什么是闭包以及为什么它使用“use”标识符?

我正在检查一些 PHP 5.3.0 功能,并在网站上发现了一些看起来很有趣的代码: 公共函数 getTotal($tax) { 总计 = 0.00 美元; $回调= /* 这行在这里...

回答 6 投票 0

在 redux-saga 调用调用的函数中对“this”的引用为空

我正在学习 redux-saga,并尝试将其集成到一个项目中,该项目使用由 openapi-generator 生成的 API,该生成器会生成如下所示的输出: 异步登录用户(正文:Logi...

回答 2 投票 0

在 Kotlin 中,是否可以更改闭包中的引用?

这个想法是,您将 lambda 传递给一个类,并且您希望在将其传递给该类后更改实现,但该类没有公开任何更新 lambda 实现的方法....

回答 1 投票 0

如何在 Rust 中传递对闭包的引用?

我正在使用 wry 生成一些网络视图。每个视图都有一个 on_page_load_handler。在处理程序内部,我需要访问 Web 视图,例如导航到另一个网站。遗憾的是我没能通过网络竞争...

回答 1 投票 0

JS:为书签脚本注入 BoundFunctionObject

假设我正在编写一个书签脚本来修改网页。大多数网站(使用 webpack 等)都遵循这样的结构: <question vote="1"> <div> </div> <p>假设我正在编写一个书签脚本来修改网页。大多数网站(使用 webpack 等)都遵循这样的结构:</p> <pre><code>&lt;html&gt; &lt;script type=&#34;text/javascript&#34;&gt; const buttonClicked = (() =&gt; { let internal_variable = 0; const _internal_buttonClicked = () =&gt; { internal_variable++; document.getElementById(&#34;myButton&#34;).innerText = `Clicked ${internal_variable} times!`; }; return _internal_buttonClicked.bind(this); })(); &lt;/script&gt; &lt;body&gt; &lt;button id=&#34;myButton&#34; onclick=&#34;buttonClicked()&#34;&gt;Clicked 0 times!&lt;/button&gt; &lt;/body&gt; &lt;/html&gt; </code></pre> <p>我想访问 <pre><code>internal_variable</code></pre> 并将其设置为 -100。使用调试器,这很简单;我在<pre><code>_internal_buttonClicked()</code></pre>里面断点,然后直接改<pre><code>internal_variable</code></pre>。</p> <p>我怎样才能做到这一点而不</p> <ul> <li>(手动)使用调试器</li> <li>拥有页面源的所有权(例如,我可以在本地对其进行修改,但我不能只发送拉取请求以将挂钩添加到脚本中)</li> <li>使其成为对 DOM 的纯粹视觉更改?</li> </ul> <p>我知道简单的答案是“你不能,故意”,但我愿意接受任何迂回的解决方案,涉及浏览器扩展/特权执行的解决方案,特定于<pre><code>require</code></pre>的解决方案等</p> <p>相关:</p> <ul> <li><a href="https://stackoverflow.com/questions/42602954/how-to-get-parameters-that-have-been-bound-by-javascripts-bind-function">如何获取JavaScript的.bind()函数绑定的参数</a></li> <li><a href="https://stackoverflow.com/questions/11192875/is-it-possible-to-gain-access-to-the-closure-of-a-function">是否可以访问函数的闭包?</a>(此处的最佳解决方案取决于成为第一个加载的脚本,这对于小书签来说通常是不可行的?有没有办法使页面重新加载并注入将脚本放入刷新页面的顶部?)</li> </ul> </question> <answer tick="false" vote="0"> <p>无法为 <pre><code>internal_variable</code></pre> 分配新值,因为它不在您的代码范围内。您也不能将新函数分配给 <pre><code>buttonClicked</code></pre>,因为它是一个常量。</p> <p>但根据实际情况,你可以采取其他一些方法。以下是一些适用于您的示例案例的内容:</p> <h2>1.覆盖<pre><code>innerText</code></pre></h2> <p>让它更改按钮上显示的数字,方法是始终从即将显示的值中减去 100。</p> <p>你的代码会有这样的:</p> <pre><code> Object.defineProperty(document.getElementById(&#34;myButton&#34;), &#34;innerText&#34;, { set(text) { // Subtract 100 from the number in the text &#34;Clicked &lt;number&gt; times!&#34; text = text.replace(/(Clicked )(\d+)( times!)/, (_, a, b, c) =&gt; a + (b - 100) + c); // Call the prototype setter for innerText Object.getOwnPropertyDescriptor(HTMLElement.prototype, &#34;innerText&#34;).set.call(this, text); } }); </code></pre> <p>扁平化为小书签:</p> <pre><code>javascript: {Object.defineProperty(document.getElementById(&#34;myButton&#34;),&#34;innerText&#34;,{set(text) {text=text.replace(/(Clicked )(\d+)( times!)/,(_,a,b,c)=&gt;a+(b-100)+c);Object.getOwnPropertyDescriptor(HTMLElement.prototype,&#34;innerText&#34;).set.call(this, text);}});} </code></pre> <h2>2.创建一个新函数<pre><code>buttonClicked2</code></pre></h2> <p>它应该有对计数器进行修改的代码。然后将每次调用 <pre><code>buttonClicked</code></pre> 更改为 <pre><code>buttenClicked2</code></pre>。这里我假设就像示例中一样,此类引用仅存在于按钮的 <pre><code>onclick</code></pre> 属性中。此调用的位置越多,您可能需要复制为新函数的函数就越多,还需要重新连接对 <em>that</em> 函数的引用,...等。但这里只有 <pre><code>onclick</code></pre> 属性受到影响:</p> <pre><code> var buttonClicked2 = (() =&gt; { let internal_variable = -100; // Our update const _internal_buttonClicked = () =&gt; { internal_variable++; document.getElementById(&#34;myButton&#34;).innerText = `Clicked ${internal_variable} times!`; }; return _internal_buttonClicked.bind(this); })(); // Redirect the click document.getElementById(&#34;myButton&#34;).setAttribute(&#34;onclick&#34;, &#34;buttonClicked2()&#34;); </code></pre> <p>扁平化为小书签:</p> <pre><code>javascript: {var buttonClicked2=(()=&gt;{let internal_variable=-100;const _internal_buttonClicked=()=&gt;{internal_variable++;document.getElementById(&#34;myButton&#34;).innerText=`Clicked ${internal_variable} times!`;};return _internal_buttonClicked.bind(this);})();document.getElementById(&#34;myButton&#34;).setAttribute(&#34;onclick&#34;, &#34;buttonClicked2()&#34;);} </code></pre> <h2>3.创建一个页面填充 <pre><code>&lt;iframe&gt;</code></pre></h2> <p>在其中 <pre><code>&lt;iframe&gt;</code></pre> 放置当前的 HTML,但修改您想要的代码。因此,页面将重新加载,但经过您的修改并显示为 <pre><code>&lt;iframe&gt;</code></pre>。</p> <pre><code>if (window === top) { // Patch the HTML let html = document.documentElement.innerHTML .replace(&#34;internal_variable = 0;&#34;, &#34;internal_variable = -100;&#34;); let iframe = `&lt;body style=&#34;margin:0&#34;&gt;&lt;iframe style=&#34;display:block;border:0;height:100%;width:100%&#34;&gt;&lt;/iframe&gt;&lt;/body&gt;`; // Replace the current document with just an &lt;iframe&gt; document.write(iframe); // Write the patched HTML to the frame document document.querySelector(&#34;iframe&#34;).srcdoc = html; } </code></pre> <p>扁平化为小书签:</p> <pre><code>javascript: if(window===top){let html = document.documentElement.innerHTML.replace(&#34;internal_variable = 0;&#34;, &#34;internal_variable = -100;&#34;);let iframe = `&lt;body style=&#34;margin:0&#34;&gt;&lt;iframe style=&#34;display:block;border:0;height:100%;width:100%&#34;&gt;&lt;/iframe&gt;&lt;/body&gt;`;document.write(iframe);document.querySelector(&#34;iframe&#34;).srcdoc=html;} </code></pre> <h2>限制</h2> <p>上述每种解决方案都有其局限性。其中之一是否适合现实生活中的情况将在很大程度上取决于页面的功能。</p> </answer> </body></html>

回答 0 投票 0

PowerShell 通用列表 .Where() 从更高范围进行变量扩展的性能

给定一个名为 $衍生值的哈希表和一个需要变量扩展的变量,我看到了一些有趣的性能问题。 鉴于: $rule.opnd1 = '卸载字符串' $rule.opnd2 = 'MsiE...

回答 1 投票 0

React 闭包中过时的 useState 值 - 如何修复?

我想在模态关闭时使用状态变量(值)。但是,在模式打开时对状态变量所做的任何更改都不会在处理程序中观察到。我不明白为什么会这样...

回答 5 投票 0

Python、循环和闭包

我是一位相当有经验的 C/C++(以及某种程度上的 Java)程序员。我正在学习 python,但我对该语言的一些奇怪的(对于我的背景)行为感到困惑。 我正在学习嵌套

回答 5 投票 0

Golang http.HandlerFunc 闭包初始化

Matt Ryer 在他的演讲 How I Write HTTP Web Services 中提到了一些有趣的事情。他建议编写返回 handlerfunc 的 http 处理程序,如下所示: func (s *server) handleSomething() http.

回答 1 投票 0

字符串变量中 .Where() 的 Powershell 闭包

我有一个从注册表中的卸载项派生的哈希表的通用列表,我需要对其进行搜索。每个列表成员都是包含这些键的有序字典。每个k的实际值...

回答 1 投票 0

Next.js 中的“加密闭包”是什么以及它们如何工作?

学习 Next.js 提到“加密闭包”作为服务器操作的重要安全机制,其中一些 Next.js 应用程序在服务器上运行,而不是在客户端 JavaS 中运行...

回答 1 投票 0

useEffect 功能未按预期工作

从 'react' 导入 React, { useState, useEffect } 函数计数器() { const [计数,setCount] = useState(0) 常量 incCount = () => { console.log("计数", 计数) // se...

回答 2 投票 0

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