问题标签 [compile-time-constant]

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 投票
0 回答
44 浏览

constants - 不清楚在运行时使用未定义的 SDK 枚举常量

最好从一个示例开始:在 OS X 中,Foundation/NSString.h 中定义了以下枚举常量:

问题:

  • 在编译时,编译器是否简单地将 NSRegularExpressionSearch 替换为其常量值(1024)?
  • 或者,是否在运行时找到了常量值,如果是,那么在 10.7 之前的版本上运行时常量的值是多少?
  • 在使用枚举常量之前,是否建议在运行时有条件地检查程序正在运行的环境?
  • NSRegularExpressionSearch即使将在 10.7 之前的运行时运行,放入我的代码是否总是安全的?(安全是指常量的存在不会导致崩溃或异常;显然,当我使用旧 API 无法识别的常量值时,我必须考虑程序的行为。)
0 投票
2 回答
163 浏览

scala - 最终值会增加对象大小吗?

每个Foo对象都有一个pi成员吗?因此,我应该放入pi伴随对象吗?

0 投票
3 回答
308 浏览

c# - 在另一个类构造函数中将类作为可选参数传递,而不会出现编译时常量错误

在这个例子中假设我们有一个类:

所有参数都是可选的,因此用户可以使用任一实例化类

或者用户选择的任何内容,而无需传递所有甚至任何参数。

现在假设我们要添加另一个可选参数StreamWriter sw = new StreamWriter(File.Create(@"app.log"));(我假设这是实例化 StreamWriter 类的正确语法)。

显然,作为必要的论点,我可以将它添加到构造函数中,如下所示:

但是,如果我希望它成为可选参数,我该怎么办?以下:

不是一个选项,因为您收到以下错误:

有没有另一种方法可以在sw不收到此错误的情况下制作可选参数?

0 投票
1 回答
254 浏览

postgresql - 在 SQL 查询中执行一次性计算

我有这个查询(为简单起见进行了编辑):

我注意到通过手动输入时间值可以更快地执行:

其中时间是以毫秒为单位的纪元时间戳。我的猜测是计算机正在评估extract(EPOCH...)每条记录的部分,而它实际上只需要这样做一次。

有没有办法保持第一个查询的更易读的形式,同时保持查询与第二个查询一样高效?

我是 PostgreSQL 的新手(并且完全是自学的),所以我认为我最常遇到的问题是不知道我应该将一个特定的关键字放入 google - 我已经使用过这个关键字以及 PostgreSQL 文档。

提前致谢 :)

EDIT1:感谢非常详细的答复。我怀疑我可能与大多数受访者处于不同的时区——我明天将为此提供实验证据(这里已经很晚了)。

EDIT2:总结下面的答案,使用“bigint”进行投射就可以了。代替:

和:

0 投票
1 回答
116 浏览

java - 参数化注释值

我有两个类使用注释来定义字段和数据库列名之间的链接。除了它们定义的列名之外,这些类非常相似:

我想有一个超类,我可以给它"IDTableA/B"常量。理想情况下是“类似”(我知道除了类型之外你不能给泛型提供任何东西,只是为了说明我的观点):

这有可能吗?

0 投票
2 回答
1708 浏览

c++ - 为什么 sizeof 表达式不是像 2、4、8 等这样的编译时常量?

我的编译器是最新的 VC++ 2013 预览版。

为什么 sizeof 表达式不是像 2、4、8 等这样的编译时常量?

0 投票
3 回答
661 浏览

c++ - C++ 从 const 数组中声明其大小值的数组

我正在尝试定义一个堆栈 c 样式数组,其大小取自 const 数组并且在编译时是已知的。

它失败。如何修复?

0 投票
1 回答
261 浏览

c++ - 0、int()和int{}有什么区别?

由于int()int{}是值等于的常量0表达式,我认为它们是等价且可互换的,因此编译器必须平等对待它们。例如,

但似乎在某些极端情况下它们不可互换。

  • 初始化指针时:

    请参阅GCCClang消息。我怀疑这是两个编译器中的一个错误,因为我希望它们在这种情况下可以互换,但我很高兴被证明是错误的。:-)

  • 传递给类模板时:

    请参阅GCCClang消息。

    我发现语法X<int()>非常熟悉,因为我以前见过(并且可能使用过)类似的语法,例如在 中std::function<int()>,模板参数int()应该是函数类型 (而不是0),不带参数并返回int。但是我想知道规范中在这种情况下所说的部分int()将被视为函数类型并且不等同于int{}which is always 0

0 投票
2 回答
247 浏览

php - 如何在代码中使用 date() 常量创建变量?(php,drupal)

我有时间问题。如果我使用 php 进行某些操作,我正在制作一个卡拉 OK 网站。该网站是用 Drupal 制作的。我的问题是我正在使用 date() 来制作所录制歌曲的文件名。但是这个文件名在我的页面上的两个地方使用。第一个位置是在页面加载后立即生成文件名,并“回显”它以供小程序使用。小程序是在用户录制歌曲后离开页面时最后上传文件。

按下按钮时,第二个位置将使用文件名。此代码会将文件名写入节点(我的歌曲)以供稍后访问。所以两个文件名必须相同。问题是两个代码使用常量的时间之间存在差异。所以节点My Songs中写入的文件名与上传的文件名不一样。因为两个代码使用文件名时有4-5分钟的差异。我想函数: date('dmhi') 存储在常量中,而不是函数的字符串(结果)中。我尝试使用一个变量并首先用一个字符串对其进行初始化,以便它仍然是一个字符串,但它不起作用。我更像是一个 C++ 和 VB 编码器,所以我不明白变量和常量在 php 中是如何工作的。我在网上搜索了几天,但没有找到任何答案。我希望你们能帮助我。这是我的代码的一部分:

第一次出现:

按下按钮时的第二次出现:

提前感谢您能给我的任何线索。

娜塔莉

编辑:

我会尽力解释得更好。我正在生成一个页面,该页面将在小程序(语音记录器)中构建一些代码。在那个applet 中,我使用php 来制作applet 代码的一部分。那部分是让小程序上传用户完成的录音。现在,我需要一个对每个用户都不同的文件名。如果用户在一天中多次录制同一首歌曲,则文件名必须不同,所以我在文件名中使用日期和时间。使用函数 date();

但是该文件名是在加载时生成的。所以文件名将包括加载页面的时间。后来当用户真正保存歌曲时,时间已经过去,但上传的文件名包含加载时间而不是保存时间。发生这种情况是因为在加载页面时小程序内的文件名是“echo”(ed)。我没有其他办法可以解决它。

但是,我想保留这段时间,以便我可以再次使用它。问题是当我再次尝试使用文件名时,时间不再相同。几分钟过去了。所以文件名不一样。并且当文件名在保存后记录后写入另一个页面(节点或文件)时,它与前一个不一样。

我知道这有点复杂。但基本上,我需要生成一个包含时间的文件名。并在两个场合使用相同的文件名,这将用一个时间范围分隔。但文件名不应更改。

0 投票
3 回答
1802 浏览

performance - 为什么在 Haskell 的编译时不计算(常量)表达式?

我目前正在学习 Haskell,有一件事情让我感到困惑:

当我构建一个复杂的表达式(其计算需要一些时间)并且该表达式是常量(意味着它仅由已知的硬编码值构建)时,不会在编译时评估该表达式。

来自 C/C++ 背景,我习惯了这种优化。

在 Haskell / GHC 中不执行此类优化(默认情况下)的原因是什么?有什么好处,如果有的话?

由于这将始终打印True,我希望编译后的程序几乎立即打印并退出。