问题标签 [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.
f# - 歧视联盟&让绑定?
为什么在有区别的联合中不允许使用 let 绑定?我认为这与在默认构造函数中执行的 let 绑定有关吗?
在第二点上,任何关于我如何重写的建议AI_Choose
都将不胜感激。我想将加权优先级与 AI 保持在一个元组中。我的想法是AI_Weighted_Priority
继承AI_Priority
和覆盖选择。我不想处理不同长度的压缩列表(糟糕的做法 imo。)
f# - 如何在 F# 中正确实现属性?
考虑我的第一次尝试,F# 中的一个简单类型,如下所示:
现在我通过 C# 测试它(这个对象被暴露给一个 C# 项目,所以明显的 C# 语义是可取的):
propName
已正确分配,我的 F# Setter 正在运行,但第二个断言失败,因为基础值prop
未更改。这种对我来说很有意义,因为如果我mutable
从prop
字段中删除,不会产生错误(应该是因为我试图改变值)。我想我一定错过了一个基本概念。
prop
在课堂上重新绑定/变异以Test
通过单元测试的正确方法是什么?
f# - 避免“不完全模式匹配”警告的替代方法
我编写了一个函数,它将一个数组作为输入并返回一个大小相等的数组作为输出。例如:
现在我想通过 let 绑定来分配结果。例如:
哪个效果很好...
...除了它会产生警告:
警告的来源和原因已经介绍过,我只是在寻找一个简洁的解决方法。这个函数调用发生在我的函数顶部附近,我不喜欢将整个函数体放在一个匹配项中的想法:
那只是闻起来很糟糕。我也不喜欢忽略警告的想法——违背了我更好的判断。是否有其他选择可供我选择,还是我只需要完全找到不同的方法?
f# - F# 标识符、模块、类型和成员名称中允许使用哪些字符?
这个问题是关于标识符中的字符,而不是关键字作为标识符。
我在 C# names 上找到了这个问题,但在 F# 上找不到相同的问题。通常这几乎不相关,但在我的测试命名中,我经常使用点.
并且很惊讶它在模块名称中不受支持,但在 let-binding 中受支持:
在命名测试之外,我看不出它有多大用处,但这让我想知道:类型和模块名称支持哪些字符,成员名称和 let 绑定支持哪些字符?
一些测试:
所有这些名称都在 let-binding 或成员名称中成功,但不是作为类型名称或模块名称。至少这是一致的。但是我在允许和不允许的内容中找不到任何线路或逻辑
也许限制是由 CLR / MSIL 而不是 F# 本身施加的?
loops - Common Lisp `loop`:最大化为`let`引入的局部变量
loop
Common Lisp 中的工具允许使用多个值累积子句maximize
等。
现在,也可以为子句赋予一个var
变量maximize
:
我的问题是:
是否可以作为var
由 引入的新局部变量let
给出?
一个示例场景是:
x
具有数值并不重要,它仅用于说明目的。