- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不太清楚静态公共(public)常量在 ActionScript 3 中是如何工作的。
是不是每次使用都会计算常量值?
这里有一个例子:
public static const DIAMETER:Number = 100;
那么如果我这样设置这个常量
public static const RADIUS:Number = DIAMETER /2;
不知道每次用这个常数会不会计算出结果
我需要一些关于它的信息。
具有常量对象类型的相同问题:
public static const MY_POINT:Point = new Point(100,100);
谢谢;)
最佳答案
“常量”(const
) 是一个只能设置一次并且必须紧邻(通常是立即)设置到对象声明的对象。所以你不能这样做:
const val:String;
... 5 minutes later ...
val = 'hello world'
相反,您必须:
const val:String = 'hello world';
从文档来看,您似乎可以晚于此设置它,但似乎没有预定义的时间或顺序可以设置它。你最好像我上面那样立即设置它。如果您在“严格模式”下编译,它必须像我上面那样设置。
常数有利于处理时间。因为它是一个固定值,所以运行时可以以更有效的方式以不同方式存储它。我不记得具体细节,但 const 相对于标准变量在对象访问时间方面提供了实质性改进。
static
是一个访问修饰符,就像 private
或 public
一样(还有很多其他的,我建议你阅读所有其中)。静态对象只存在一次。每次实例化/访问其类时都会声明一个标准对象。静态对象仅在第一次声明。所以考虑以下内容
public class ClassA {
public static var URL:String = "http://google.com";
public function ClassA(){
//hello world
}
}
这是一个简单的类,其中存储了一个public static var
。当我这样实例化类时:
var hello:ClassA = new ClassA();
URL
已创建并设置为 Google 的 URL。现在,静态属性不属于对象,因此如果您尝试访问 hello.URL
,它将失败。相反,它属于类定义。因此,您可以通过 ClassA.URL
访问它。在 ClassA 的范围内,您可以通过 ClassA.URL
或仅通过 URL
访问它。一般静态对象用在两个地方:
Math.PI
或 Math.max()
就是很好的例子User
对象,我在其中存储 username
和 accountType
等。 静态对象既好又坏。对于将被实例化一千次并且值永远不会改变的类,它提供了显着的内存使用优势(而不是存储 15 字节 x 1000 或 1.5 KB,您只存储前 15 个字节)。但是,需要考虑范围问题和通用 OOP 标准。你会发现人们会争论到静态对象脸色发青,并且通过关联单例(阅读那些,它们与静态对象不同),永远不应该使用,因为它违反了 OOP 原则。我将它用于 User 对象的示例是否应该是静态的是值得商榷的。有些人会争辩说它应该是一个 Singleton(实际上我最新的项目使用的是 Singleton),有些人会争辩说它应该使用其他方法,有些人甚至会争辩说 User
对象应该通过对象无限传递所以它到达了它需要到达的地方(这绝对是一场噩梦)。
实际上,请按您认为合适的方式使用它们。你是开发者。找出最适合项目以及您和您的团队的方法。
阅读here关于常数和 here有关 AS3 中访问修饰符的一般概述(以及大多数基于类的 OOP 语言)
static const
提供了两者的好处。它是一个仅存在一次且仅设置一次的对象,因此它提供了内存和处理时间优势。它通常用于需要保存一个永远不会改变但需要多次访问的值(如 Math.PI
或 MouseEvent.MOUSE_DOWN
)
关于actionscript-3 - 静态公共(public)常量 ActionScript 3 良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935617/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!