在TypeScript中,const
关键字不能用于声明类属性.这样做会导致编译器出错,"类成员不能拥有'const'关键字."
我发现自己需要在代码中清楚地指出不应该更改属性.如果我在声明属性后尝试为该属性分配新值,我希望IDE或编译器出错.你们是如何实现这一目标的?
我目前正在使用只读属性,但我是Typescript(和JavaScript)的新手,并想知道是否有更好的方法:
get MY_CONSTANT():number {return 10};
Run Code Online (Sandbox Code Playgroud)
我正在使用typescript 1.8.建议?
PS:我现在正在使用打字稿2.0.3,所以我接受了大卫的回答
我在一些类上定义了几个CONST,并希望得到它们的列表.例如:
class Profile {
const LABEL_FIRST_NAME = "First Name";
const LABEL_LAST_NAME = "Last Name";
const LABEL_COMPANY_NAME = "Company";
}
Run Code Online (Sandbox Code Playgroud)
有没有办法获得在Profile
课堂上定义的CONST列表?据我所知,最接近的选项(get_defined_constants()
)不会起作用.
我真正需要的是一个常量名称列表 - 如下所示:
array('LABEL_FIRST_NAME',
'LABEL_LAST_NAME',
'LABEL_COMPANY_NAME')
Run Code Online (Sandbox Code Playgroud)
要么:
array('Profile::LABEL_FIRST_NAME',
'Profile::LABEL_LAST_NAME',
'Profile::LABEL_COMPANY_NAME')
Run Code Online (Sandbox Code Playgroud)
甚至:
array('Profile::LABEL_FIRST_NAME'=>'First Name',
'Profile::LABEL_LAST_NAME'=>'Last Name',
'Profile::LABEL_COMPANY_NAME'=>'Company')
Run Code Online (Sandbox Code Playgroud) 我希望能够做到这样的事情:
class ThingIDs
{
const Something = 1;
const AnotherThing = 2;
}
$thing = 'Something';
$id = ThingIDs::$thing;
Run Code Online (Sandbox Code Playgroud)
这不起作用.做一些等效的直接方式吗?请注意,我坚持上课; 它在图书馆我无法重写.我正在编写在命令行上接受参数的代码,我真的希望它采用符号名而不是id号.
假设您需要定义一个类,它所做的就是保持常量.
public static final String SOME_CONST = "SOME_VALUE";
Run Code Online (Sandbox Code Playgroud)
这样做的首选方式是什么?
我应该使用哪一个?为什么?
枚举 - 我不会使用枚举,我不会枚举任何东西,只是收集一些与任何方式无关的常量.
接口 - 我不打算将任何类设置为实现接口的类.只想使用接口调用常量,如下所示:ISomeInterface.SOME_CONST
.
我目前正在尝试深入研究Java虚拟机的规范.我一直在网上阅读JVM内容,有一个令人困惑的抽象,我似乎无法理解:Constant Pool.这是本书的摘录:
对于它加载的每种类型,Java虚拟机必须存储常量池.常量池是类型使用的有序常量集,包括文字(字符串,整数和浮点常量)以及对类型,字段和方法的符号引用.常量池中的条目由索引引用,非常类似于数组的元素.因为它包含对类型使用的所有类型,字段和方法的符号引用,所以常量池在Java程序的动态链接中起着核心作用
关于上述内容和CP,我有几个问题:
.class
每种类型的文件中?Python 3.4引入了一个新模块enum
,它为该语言添加了枚举类型.该文档enum.Enum
提供了一个示例来演示如何扩展它:
>>> class Planet(Enum):
... MERCURY = (3.303e+23, 2.4397e6)
... VENUS = (4.869e+24, 6.0518e6)
... EARTH = (5.976e+24, 6.37814e6)
... MARS = (6.421e+23, 3.3972e6)
... JUPITER = (1.9e+27, 7.1492e7)
... SATURN = (5.688e+26, 6.0268e7)
... URANUS = (8.686e+25, 2.5559e7)
... NEPTUNE = (1.024e+26, 2.4746e7)
... def __init__(self, mass, radius):
... self.mass = mass # in kilograms
... self.radius = radius # in meters
... @property
... def surface_gravity(self):
... # universal …
Run Code Online (Sandbox Code Playgroud) 在Ruby中,如何创建私有类常量?(即在课堂内可见但不在课堂外可见的)
class Person
SECRET='xxx' # How to make class private??
def show_secret
puts "Secret: #{SECRET}"
end
end
Person.new.show_secret
puts Person::SECRET # I'd like this to fail
Run Code Online (Sandbox Code Playgroud) 我们可以设置类常量的可见性吗?
对于这个例子:
class MyClass {
const CONST_VALUE = 'A constant value';
}
Run Code Online (Sandbox Code Playgroud)
我们可以指定吗?
public const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud)
要么
private const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud)
要么
protected const CONST_VALUE = 'A constant value';
Run Code Online (Sandbox Code Playgroud) 当访问类常量时,我看到我可以使用变量作为类名,例如$classname::CONST_VALUE
.
如果我想用一个变量为恒名称,例如self::$constant
.这似乎不起作用.有解决方法吗?
我正在使用Delphi 2007来维护一个旧项目,我在从Class Reference变量访问类常量时遇到问题,我总是得到父类常量而不是子类常量.
假设有一个父类,一些子类,一个类引用,最后是一个const数组来存储类引用以进行循环.
看看以下简单的程序:
program TestClassConst;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
TParent = class
const
ClassConst = 'BASE CLASS';
end;
TChild1 = class(TParent)
const
ClassConst = 'CHILD 1';
end;
TChild2 = class(TParent)
const
ClassConst = 'CHILD 2';
end;
TParentClass = class of TParent;
TChildClasses = array[0..1] of TParentClass;
const
ChildClasses: TChildClasses = (TChild1, TChild2);
var
i: integer;
c: TParentClass;
s: string;
begin
try
writeln;
writeln('looping through class reference array');
for i := low(ChildClasses) to high(ChildClasses) do begin
c := …
Run Code Online (Sandbox Code Playgroud) class-constants ×10
php ×4
constants ×2
java ×2
const ×1
delphi ×1
enums ×1
inheritance ×1
python ×1
python-3.x ×1
ruby ×1
typescript ×1