问题标签 [let-binding]

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 回答
1434 浏览

f# - 歧视联盟&让绑定?

为什么在有区别的联合中不允许使用 let 绑定?我认为这与在默认构造函数中执行的 let 绑定有关吗?

在第二点上,任何关于我如何重写的建议AI_Choose都将不胜感激。我想将加权优先级与 AI 保持在一个元组中。我的想法是AI_Weighted_Priority继承AI_Priority和覆盖选择。我不想处理不同长度的压缩列表(糟糕的做法 imo。)

0 投票
3 回答
2888 浏览

f# - 如何在 F# 中正确实现属性?

考虑我的第一次尝试,F# 中的一个简单类型,如下所示:

现在我通过 C# 测试它(这个对象被暴露给一个 C# 项目,所以明显的 C# 语义是可取的):

propName已正确分配,我的 F# Setter 正在运行,但第二个断言失败,因为基础值prop未更改。这种对我来说很有意义,因为如果我mutableprop字段中删除,不会产生错误(应该是因为我试图改变值)。我想我一定错过了一个基本概念。

prop在课堂上重新绑定/变异以Test通过单元测试的正确方法是什么?

0 投票
2 回答
1140 浏览

f# - 避免“不完全模式匹配”警告的替代方法

我编写了一个函数,它将一个数组作为输入并返回一个大小相等的数组作为输出。例如:

现在我想通过 let 绑定来分配结果。例如:

哪个效果很好...

...除了它会产生警告:

警告的来源和原因已经介绍过,我只是在寻找一个简洁的解决方法。这个函数调用发生在我的函数顶部附近,我不喜欢将整个函数体放在一个匹配项中的想法:

那只是闻起来很糟糕。我也不喜欢忽略警告的想法——违背了我更好的判断。是否有其他选择可供我选择,还是我只需要完全找到不同的方法?

0 投票
1 回答
1401 浏览

f# - F# 标识符、模块、类型和成员名称中允许使用哪些字符?

这个问题是关于标识符中的字符,而不是关键字作为标识符

在 C# names 上找到了这个问题,但在 F# 上找不到相同的问题。通常这几乎不相关,但在我的测试命名中,我经常使用点.并且很惊讶它在模块名称中不受支持,但在 let-binding 中受支持:

在命名测试之外,我看不出它有多大用处,但这让我想知道:类型和模块名称支持哪些字符,成员名称和 let 绑定支持哪些字符?

一些测试:

所有这些名称都在 let-binding 或成员名称中成功,但不是作为类型名称或模块名称。至少这是一致的。但是我在允许和不允许的内容中找不到任何线路或逻辑

也许限制是由 CLR / MSIL 而不是 F# 本身施加的?

0 投票
1 回答
799 浏览

loops - Common Lisp `loop`:最大化为`let`引入的局部变量

loopCommon Lisp 中的工具允许使用多个值累积子句maximize等。
现在,也可以为子句赋予一个var变量maximize

我的问题是:

是否可以作为var由 引入的新局部变量let给出?

一个示例场景是:

x具有数值并不重要,它仅用于说明目的。