问题标签 [language-specifications]
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.
python - 你能在 Python 的语法中添加新的语句吗?
你能在 Python 的语法中添加新的语句(如print
, raise
, )吗?with
说,允许..
或者,
不是如果你应该,而是如果可能的话(没有修改python解释器代码)
c# - Questions about Structs
MSDN says that a class that would be 16 bytes or less would be better handled as a struct [citation].
Why is that?
Does that mean that if a struct is over 16 bytes it's less efficient than a class or is it the same?
How do you determine if your class is under 16 bytes?
What restricts a struct from acting like a class? (besides disallowing parameterless constructors)
vba - VBA 的语法(可能是 BNF)规范?
我必须维护一部分 Access 2003 VBA 代码,这不是我的主要编程语言,虽然我在做常规工作方面非常扎实,但我仍然希望有一个纯粹的语言语法规范。它只是节省与阅读大量告诉我什么是 for 循环的愚蠢教程相比,要花很多时间。
VBA 语法上是否有任何资源?我很乐意让它尽可能正式,可能类似于 BNF。我找不到它的官方规格。
.net - 为什么不做任何事情的语句不抛出异常(或警告开发人员)?
我已经被 VB.NET 中的语句(不确定 C# 中是否存在这种效果)所困扰,这些语句似乎是自引用的,但是当它们被执行时,它们实际上并没有做任何事情,因为它们需要一个目标,一个没有提供。例如:
在这两种情况下,语句需要一个目标来将结果分配给 .NET 似乎并不困扰,而且我不给它一个目标。IDE/编译器是否有原因没有警告我这种效果,或者没有抛出异常“StatementDoesntDoAnything”?由于代码的形成方式永远不会改变任何东西,因此很明显是输入错误。
c# - C# 'dynamic' 关键字...它真的是一个 RESERVED 关键字还是只是一个标识符,在用作类型时意味着一些特殊的东西?
我有一个 C# 4.0 解析器。它接受“动态”作为关键字作为类型。我的解析器在工作 C# 3.0 程序中发现以下形式的语句:
那么,它的动态真的是一个关键字吗?或者它仍然可以用作任意标识符名称吗?(如果是这样,为什么不以同样的方式对待'int')?
某处是否有说明动态是否为关键字的参考规范?最新的 ECMA C# 4 规范甚至没有提到“动态”,我在 MS 网站上能找到的最好的是“初步规范”,它说它是一个关键字,但我怀疑这只是草率的写作。
xsd - XSD 不允许我在所有指标内有无界
我正在尝试使 var1 中的变量无序列表出现两次,而 var2 出现无限次(我的项目中的用例不同)。该元素不允许我使用 maxOccurs。
我正在尝试做的事情有什么解决方法吗?
python - False == 0 和 True == 1 是实现细节还是由语言保证?
是否保证False == 0
and True == 1
, 在 Python 中(假设它们没有被用户重新分配)?例如,是否以任何方式保证以下代码将始终产生相同的结果,无论 Python 的版本是什么(现有的和可能的未来版本)?
任何对官方文档的参考将不胜感激!
编辑:正如许多答案中所述,bool
继承自int
. 因此,这个问题可以改写为:“文档是否正式说程序员可以依赖从整数继承的布尔值,以及值0
和1
?”。这个问题与编写不会因实现细节而失败的健壮代码有关!
f# - F# 语言参考文档是否以离线格式(PDF、CHM)提供?
我在hubFS上发现了几篇 帖子,有人询问是否有或将会有 F# 的离线文档。这些帖子没有得到答复。所以我想试一试,在 SO 上问同样的问题。
到目前为止,我在哪里寻找离线文档:
Visual F#(2.0 版)的 2010 年 4 月 CTP 版本可用于 VS 2008,但它没有脱机帮助。
SO上有一个关于各种编程语言的离线文档的问题,但在撰写本文时没有提到F#。
当然还有 Microsoft 的F# 语言参考文档(可在 MSDN 上获得),可以下载该文档以使用例如
wget
.
问题:
有谁知道是否有任何“官方”离线文档即将发布?
(与此相关,即使很难客观地回答:期望 F#不会经过 ECMA 或 ISO 标准化是否合理,即可能不会有描述该语言的标准文档?)
c# - 语言规范中描述的理解 C# 类型推断的问题
C# 语言规范在第7.5.2 节中描述了类型推断。里面有一个细节我不明白。考虑以下情况:
Microsoft 和 Mono C# 编译器都正确推断T
= object
,但我对规范中算法的理解会产生T
=string
然后失败。这是我的理解:
第一阶段
如果 Ei 是匿名函数,则从 Ei 到 Ti 进行显式参数类型推断(第 7.5.2.7 节)
⇒ 没有效果,因为 lambda 表达式没有明确的参数类型。正确的?
否则,如果 Ei 具有类型 U 并且 xi 是值参数,则从 U 到 Ti 进行下限推断。
⇒ 第一个参数是静态类型的
string
,所以这增加string
了 的下限T
,对吧?
第二阶段
所有不依赖于(§7.5.2.5)任何 Xj 的未固定类型变量Xi 都是固定的(§7.5.2.10)。
⇒
T
不固定;T
不依赖于任何东西......所以T
应该修复,对吧?
§7.5.2.11 固定
候选类型 Uj 的集合开始是 Xi 的边界集合中所有类型的集合。
⇒ {
string
(下限)}然后,我们依次检查 Xi 的每个界限:[...] 对于 Xi 的每个下限 U,所有类型 Uj 都从候选集中删除,其中没有从 U 隐式转换到。[...]
⇒ 不会从候选集中删除任何东西,对吧?
如果在剩余的候选类型 Uj 中存在唯一类型 V,从该类型隐式转换到所有其他候选类型,则 Xi 固定为 V。
⇒ 由于只有一种候选类型,这是空洞的,所以 Xi 固定为
string
。正确的?
那么我哪里错了?
c# - 关于 C# 语言规范中的隐式转换的问题
第 6.1 节隐式转换因此定义了身份转换:
身份转换从任何类型转换为相同类型。这种转换的存在使得已经具有所需类型的实体可以说是可转换为该类型。
现在,这样的句子的目的是什么?
(在 §6.1.6 隐式引用转换中)
隐式引用转换是:
- [...]
- 从任何引用类型到引用类型
T
,如果它具有到引用类型T
0的隐式标识或引用转换,并且T
0具有到 的标识转换T
。
和:
(在 §6.1.7 装箱转换中)
- 如果值类型具有到接口类型0
I
的装箱转换并且0具有到 的标识转换,则值类型具有到接口类型的装箱转换。I
I
I
最初它们似乎是多余的(同义词)。但他们一定是有目的的,所以他们为什么在那里?
您能否举一个T
1、T
2两种类型的示例,如果不是上面引用的段落,则T
1不会隐式转换为2吗?T