- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Racket 指南中关于 parameterize ,有如下一段代码:
(define location (make-parameter "here"))
(let ([get (parameterize ([location "with a fox"])
(lambda () (location)))])
(get))
代码返回“here”
。
评估这段代码的顺序是什么?谢谢。
最佳答案
这是许多语言(不仅仅是 Racket)中动态范围值的常见问题。以下是评估代码时发生的情况:
location
参数定义为值 "here"
让
...parameterize
...location
动态更新为值 "with a fox"
lambda
表达式以创建一个关闭 location
parameterized
block 返回——参数location
恢复到它的原始值“here”
lambda
绑定(bind)到 get
让
body ...(get)
,它会查找location
的当前值,也就是"here"
,这就是结果.如果您仔细阅读有关参数的文档,它会解释该参数始终采用堆栈中最近更新的值。由于您的值 "with a fox"
的更新在进入 let
主体之前从堆栈中弹出,因此当您实际调用 时它不再可见>得到
。一个简单的解决方法是从参数中复制值并让闭包关闭副本:
(define location (make-parameter "here"))
(let ([get (parameterize ([location "with a fox"])
(let ([loc (location)])
(lambda () loc)))])
(get))
现在 lambda
在 loc
上关闭,它应该具有预期的值。
关于lisp - Racket中 `parameterize'和 `let'的求值顺序是怎样的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17905853/
我偶然发现了这个错误,但找不到问题所在: The method compute(Set, Set) in the type JaccardSimilarity is not applicable fo
我有一些测试,我想使用一些需要在收集阶段进行参数化的参数和一些需要在设置时进行参数化的参数进行参数化。我无法使用metafunc.parametrize 在 pytest_generate_test
我有一个 AbstractCacheBlock,我想定义一个 CacheSet 类,其中包含许多扩展 AbstractCacheBlock 的类。我相信我想要的是这样的 public class Ca
我想使用 Jenkins 中的参数化调度程序插件来使用 cron 运行多个因参数不同而不同的作业。可悲的是,文档很糟糕。谁能指导我如何真正让它发挥作用? 最佳答案 这个插件的作用: parameter
我遇到了这个错误 Argument 1 passed to Illuminate\Database\Grammar::parameterize() must be of the type array,
我想创建一个方法来接受字符串数组类型的“参数化”输入对象。像这样的东西: public void MyMethod(params string[][] input) { //...do stuf
我正在尝试使用Criterion框架编写一个基于一些字符串值的参数化测试。作为一个MRE,并遵循文档中显示的示例,我写了以下内容:。但是,当我运行测试时,它崩溃了,输出如下:。但是,当我尝试基于一组i
我有一个 OCaml 程序,其中模块有很多依赖于参数的功能,即“维度”。此参数在代码运行开始时确定一次,并保持不变直到终止。 我的问题是:我怎样才能把代码写得更短,这样我的函数就不需要一个“维度”参数
我正在尝试创建一个实现黑莓 Comparator 的类这样我就可以轻松地对二维数组进行排序。 import net.rim.device.api.util.Comparator; class A
这就是我的困境。我一直在使用 Selenium、TestNG 和 iText 从自动化测试运行的结果中生成漂亮的 PDF 报告,但最近有人告诉我,他们不想要 TestNG 与 JUnit 的竞争库,并
我正在使用 Katalon Studio 测试 Web 应用程序,测试步骤包括通过文件选择器将文件加载到应用程序中。我正在使用 WebUI.uploadFile() 来执行此操作,但我发现它需要仅一个
这是我简单的 JUnit 参数化测试,我用 testdata 解析 csv,并尝试将其提供给 Parametrized.Parameters,但是当我运行它时,我的测试因 java.lang.Ille
我有一个应用程序页面,其中有 52 个连续命名的文本框,用于输入和显示一年的每周需求数字。我的问题是有没有一种方法可以“参数化”控件(在本例中为文本框)名称,以便我可以遍历它们而不必列出所有 52 个
我是 Spring 的新手,对它的功能只了解了皮毛。 我有一种情况需要使用 @Scheduled 注释来设置重复任务。速率被指定为对象中的成员字段,该对象传递给封装表示任务的方法的类。 我使用了允许访
在 Jenkins 中,我使用 SSH 插件通过 ssh 在远程机器上运行 shell 命令。我已将我的 SSH 站点添加到全局配置中。 但是在我的作业配置的“使用 ssh 在远程主机上执行 shel
我是 py.test 的新手。到目前为止,我喜欢我所看到的并希望将其集成到我们的 CI 过程中。 目前我们在测试中使用了一种不同的参数化方案,我将简要解释一下: 我们不是对每个测试进行参数化,而是对每
是否可以使用 & 符号编写参数化函数? 这是 Dave Thomas 的 Programming Elixir 书中的参数化函数示例 title = fn (title) -> ( fn (name)
我们在项目内部运行 Hudson 构建服务器。每次服务器部署新版本时,我们都会发送电子邮件。 我希望这封电子邮件包含更多信息,包括用户名和构建原因。 来自 Parameterized builds 上
这是一个困扰我一段时间的问题,我想知道这里是否有人可以提供帮助。 我有一个名为 lambdaLVar 的语言的 PLT Redex 模型,它或多或少是一种花园式的无类型 lambda 演算,但扩展了一
我已经测试在某些可执行文件上运行子进程并测试标准输出结果。 所以我用 #conftest.py def pytest_addoption(parser): parser.addoption("
我是一名优秀的程序员,十分优秀!