gpt4 book ai didi

actionscript-3 - 静态公共(public)常量 ActionScript 3 良好做法

转载 作者:行者123 更新时间:2023-12-01 11:42:44 25 4
gpt4 key购买 nike

我不太清楚静态公共(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 是一个访问修饰符,就像 privatepublic 一样(还有很多其他的,我建议你阅读所有其中)。静态对象只存在一次。每次实例化/访问其类时都会声明一个标准对象。静态对象仅在第一次声明。所以考虑以下内容

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 访问它。一般静态对象用在两个地方:

  1. 实用类。 Math.PIMath.max() 就是很好的例子
  2. 需要保存单个实例的对象。我喜欢将它们用于用户系统,您可以在任何给定时间仅以单个用户身份登录。我通常有一个 User 对象,我在其中存储 usernameaccountType 等。

静态对象既好又坏。对于将被实例化一千次并且值永远不会改变的类,它提供了显着的内存使用优势(而不是存储 15 字节 x 1000 或 1.5 KB,您只存储前 15 个字节)。但是,需要考虑范围问题和通用 OOP 标准。你会发现人们会争论到静态对象脸色发青,并且通过关联单例(阅读那些,它们与静态对象不同),永远不应该使用,因为它违反了 OOP 原则。我将它用于 User 对象的示例是否应该是静态的是值得商榷的。有些人会争辩说它应该是一个 Singleton(实际上我最新的项目使用的是 Singleton),有些人会争辩说它应该使用其他方法,有些人甚至会争辩说 User 对象应该通过对象无限传递所以它到达了它需要到达的地方(这绝对是一场噩梦)。

实际上,请按您认为合适的方式使用它们。你是开发者。找出最适合项目以及您和您的团队的方法。

阅读here关于常数和 here有关 AS3 中访问修饰符的一般概述(以及大多数基于类的 OOP 语言)

static const 提供了两者的好处。它是一个仅存在一次且仅设置一次的对象,因此它提供了内存和处理时间优势。它通常用于需要保存一个永远不会改变但需要多次访问的值(如 Math.PIMouseEvent.MOUSE_DOWN)

关于actionscript-3 - 静态公共(public)常量 ActionScript 3 良好做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17935617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com