问题标签 [constants]

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 投票
9 回答
13261 浏览

c - 在 C 中定义 const 值

我有一个 C 项目,其中所有代码都组织在*.c/*.h文件对中,我需要在一个文件中定义一个常量值,但是它也将用于其他文件。我应该如何声明和定义这个值?

应该static const ...*.h文件里的一样吗?如extern const ...*.h文件中并在文件中定义*.c?如果值不是原始数据类型(int,double等),而是 achar *或 a ,这有什么关系struct?(虽然在我的情况下它是一个double。)

通常,在文件中定义东西*.h似乎不是一个好主意。应该在文件中声明事物*.h,但在文件中定义它们*.c。但是,这种extern const ...方法似乎效率低下,因为编译器无法内联该值,而是必须始终通过其地址访问它。

我想这个问题的本质是:是否应该在 Cstatic const ...中的文件中定义值*.h,以便在多个地方使用它们?

0 投票
3 回答
34309 浏览

c++ - 为什么 const 成员必须在构造函数初始化器中而不是在其主体中初始化?

为什么声明为的类成员必须const在构造函数初始化器列表中而不是在构造函数体中进行初始化?

两者有什么区别?

0 投票
3 回答
403 浏览

.net - 在项目中声明常量

我已经看到了将在项目中使用的这两种常量声明方法。

  1. 公共模块中的常量。

  2. NonInheritable(Sealed) 类中的常量

有没有人使用任何其他方法来不断声明?

这些方法之间有什么区别,有什么优点和缺点吗?

谢谢。

0 投票
6 回答
43666 浏览

ruby-on-rails - Rails 中的常量值

我有一些数据想要存储在我的 Rails 应用程序的某个位置,因为我使用它来生成表单字段、检查提交的表单以确保其值有效等。基本上,我希望数据在一个位置,因为我利用它在几个地方。

以前,我initialize在控制器中定义一个方法并在该方法中初始化实例变量,例如@graph_types = ['bar', 'line']. 这似乎是一个坏主意,因为这实际上是全部initialize用于(初始化这些值)并且实例变量可以稍后更改,这是我不想要的。

现在,我在控制器中的任何方法之外定义常量,就在过滤器之后的顶部,然后冻结它们,例如GraphTypes = ['bar', 'line'].freeze.

我不想将这些数据存储在配置文件中,因为那样我就必须跟踪一个额外的文件,读入文件并解析它等等。我不想将这些数据存储在数据库中,因为那样似乎有点矫枉过正;我不需要做任何疯狂的 LEFT OUTER JOIN 类型的查询,将可用的图形类型与我的另一个常量相结合,比如Themes = ['Keynote', 'Odeo', '37 Signals', 'Rails Keynote'].freeze. 我不想将数据存储在 environment.rb 中,因为该数据仅与特定控制器有关。

考虑到这一切,我是否要采用这种“Ruby 方式”?

0 投票
7 回答
4983 浏览

c++ - 在 switch 语句中使用常量数组的元素作为 case

我正在尝试将一组按键映射到一组命令。因为我从多个地方处理命令,所以我想在键和命令之间设置一个抽象层,这样如果我更改底层键映射,我就不必更改太多代码。我目前的尝试如下所示:

当我尝试编译它(gcc 4.3.2)时,我收到错误消息:

错误:“LogicalMappings”不能出现在常量表达式中

我不明白为什么编译器有这个问题。我理解为什么不允许在 case 语句中包含变量,但我的印象是您可以使用常量,因为它们可以在编译时进行评估。常量数组不能与 switch 语句一起使用吗?如果是这样,我想我可以用类似的东西替换数组:

但这似乎不那么优雅。有人知道为什么你不能在这里使用常量数组吗?

编辑:我已经看到 C++ 标准中声称“一个整数常量表达式只能涉及文字(2.13)、枚举器、常量变量或整数或枚举类型的静态数据成员用常量表达式初始化(​​8.5) ……”。我仍然不明白为什么常量数组不能算作“用常量表达式初始化的枚举类型”。可能只是我的问题的答案是“因为它就是这样”,我将不得不解决它。但如果是这样的话,那就有点令人失望了,因为编译器确实可以在编译时确定这些值。

0 投票
5 回答
3128 浏览

java - Java 图标常量 - 静态常量可以吗?

我在整个应用程序中使用了许多图标 - 让我们以确定/取消图标为例。目前它们可能是一个勾号和一个十字(tick.png,cross.png),但我将来可能想替换它们。另外,我想将资源路径保留在一个地方。

这个可以吗:

还是我应该以不同的方式做这件事?我不介意在运行时依赖图像文件的存在,因为它们在 .jar 中

解决方案

我已经使用 Bent 的想法进行初始化,并且我已经将常量设为 final:

0 投票
4 回答
765 浏览

java - 如何在Java中获得等效的c ++常量指针?

当我将不可变类型对象(String, Integer,..) 作为 final 传递给方法时,我可以实现 C++ 常量指针的字符。但是我怎样才能在可变对象中强制执行这种行为呢?

我想要的只是防止 someMethod 修改 someObject 的状态而不对 someType 进行任何更改。这可能吗?

0 投票
5 回答
873 浏览

c++ - 一个操作符 ==,其参数是非常量引用

这个帖子,我看过这个:


在我们继续之前,这非常重要:

  • 不是在质疑任何人的编码能力。
  • 只是想知道为什么有人在比较中需要非常量引用。
  • 问题的发布 者没有编写该代码。

这是以防万一。这也很重要:

  • 我添加了/*const*/s 并重新格式化了代码。

现在,我们回到主题:

我想不出一个可以让您修改其按引用参数的等式运算符的合理使用。你?

0 投票
1 回答
236 浏览

c++ - 无法分配作为指向模板化类的指针的成员

我的问题是,在我的“Widget”类中,我有以下声明:

在成员函数中,我以正常方式用地址初始化指针:

好的,最后一行使编译器停止在:

错误 C2166:左值指定 const 对象

好吧,为了简化事情,MouseEvent 被声明为 typedef:

正如您可能想象的那样,Event__2 是:(显示的基本结构):

我不知道 Event__2 类从哪里获得 const 限定符。有小费吗 ?

谢谢。

0 投票
5 回答
16930 浏览

ruby - 红宝石中的常量或类变量?

我已经用 Ruby 编程几个月了,我想知道什么时候适合在类变量上使用常量,反之亦然。(我在 Rails 工作,考虑模型中的常量)。

或者

是否存在一种优于另一种的情况?还是只是品味/风格的问题?