Python 3.4引入了一个新的模块enum ,它将枚举types添加到语言中。 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 = […]
我目前正在深入研究Java虚拟机的规范。 我一直在网上阅读JVM书籍 ,有一个令人困惑的抽象,我似乎无法把握:常量池。 这里是这本书的摘录: 对于加载的每种types,Java虚拟机必须存储常量池。 常量池是types常量的有序集合,包括文字(string,整数和浮点常量)以及对types,字段和方法的符号引用。 常量池中的条目被索引引用,就像数组中的元素一样。 由于它拥有对types使用的所有types,字段和方法的符号引用,所以常量池在Java程序的dynamic链接中起着核心作用 关于上述和CP总体上我有几个问题: CP是否位于每个types的.class文件中? 作者所说的“象征性的参考”是什么? 常量池的目的是什么,用简单的英语?
假设你需要定义一个类,它只保存常量。 public static final String SOME_CONST = "SOME_VALUE"; 这样做的首选方法是什么? 接口 抽象类 最后一堂课 我应该使用哪一个,为什么? 澄清一些答案: 枚举 – 我不打算使用枚举,我没有枚举任何东西,只是收集一些不相关的常量。 接口 – 我不打算将任何类设置为实现接口的类。 只是想使用接口来调用常量,如: ISomeInterface.SOME_CONST 。
我希望能够做到这样的事情: class ThingIDs { const Something = 1; const AnotherThing = 2; } $thing = 'Something'; $id = ThingIDs::$thing; 这不起作用。 有没有一种直截了当的方式做同等的事情? 请注意,我被困在课堂上; 它在一个我不能改写的图书馆里。 我编写的代码在命令行上带有参数,我真的很喜欢它采用符号名称而不是id号。
我在几个类上定义了几个CONST,并想获得它们的列表。 例如: class Profile { const LABEL_FIRST_NAME = "First Name"; const LABEL_LAST_NAME = "Last Name"; const LABEL_COMPANY_NAME = "Company"; } 有什么办法可以获得在Profile类上定义的CONST列表? 据我所知,最接近的选项( get_defined_constants() )不会做的伎俩。 我真正需要的是一个常量名称列表 – 如下所示: array('LABEL_FIRST_NAME', 'LABEL_LAST_NAME', 'LABEL_COMPANY_NAME') 要么: array('Profile::LABEL_FIRST_NAME', 'Profile::LABEL_LAST_NAME', 'Profile::LABEL_COMPANY_NAME') 甚至: array('Profile::LABEL_FIRST_NAME'=>'First Name', 'Profile::LABEL_LAST_NAME'=>'Last Name', 'Profile::LABEL_COMPANY_NAME'=>'Company')