Haxe 中的常量

2023-12-20

如何在 Haxe 中创建公共常量?我只需要旧的模拟const in AS3:

public class Hello
{
     public static const HEY:String = "hey";
}

在 Haxe 中声明常量的常用方法是使用static and inline修饰符。

class Main {
    public static inline var Constant = 1;

    static function main() {
        trace(Constant);
        trace(Test.Constant);
    }
}

如果您有一组相关的常量,那么使用enum abstract https://haxe.org/manual/types-abstract-enum.html。枚举摘要的值为static and inline隐含地。


请注意,只有基本类型(Int, Float, Bool) 也String被允许inline,对于其他人来说,它将失败并出现以下错误:

内联变量初始化必须是常量值

幸运的是,Haxe 4 引入了final对于这种情况可能有用的关键字:

public static final Regex = ~/regex/;

然而,final只能防止重新分配,它不会使类型不可变。因此仍然可以添加或删除类似的值static final Values = [1, 2, 3];.

对于数组的具体情况,Haxe 4 引入了haxe.ds.ReadOnlyArray https://api.haxe.org/v/development/haxe/ds/ReadOnlyArray.html?它允许“常量”列表(假设您不使用强制转换或反射来解决它):

public static final Values:haxe.ds.ReadOnlyArray<Int> = [1, 2, 3];
Values = []; // Cannot access field or identifier Values for writing
Values.push(0); // haxe.ds.ReadOnlyArray<Int> has no field push

尽管这是特定于数组的解决方案,但相同的方法也可以应用于其他类型。ReadOnlyArray<T>简单来说就是一个抽象类型 https://haxe.org/manual/types-abstract.html通过执行以下操作创建只读“视图”:

  • 它包裹着Array<T>
  • it uses @:forward https://haxe.org/manual/types-abstract-forward.html仅公开不会改变数组的字段,例如length and map()
  • 它允许隐式转换 https://haxe.org/manual/types-abstract-implicit-casts.html from Array<T>

你可以看看它是如何实现的here https://github.com/HaxeFoundation/haxe/blob/development/std/haxe/ds/ReadOnlyArray.hx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haxe 中的常量 的相关文章

  • Haxe: class, object, new and constructor

    haxe 类 对象 new 和 构造函数 package if neko import neko Lib import neko io File end class Thing public function new trace new f
  • Haxe 在 PHP 环境中部署的 Web“框架”?

    最近我一直在看Haxe 构建要部署到运行 PHP 的 Apache 的应用程序 好吧 虽然它看起来可能适合我的需求 部署到 PHP 但不使用糟糕的语言 但我还没有发现任何东西可以使实际应用程序开发比构建传统的非 MVC PHP 应用程序更容
  • FlashDevelop、Haxe 导入 CreateJS?

    我刚刚开始尝试 Haxe 制作一个网络应用程序 我想使用 CreateJS 它有一个 Haxe extern lib 东西 我使用 FlashDevelop 作为我的 IDE 所以我在FlashDevelop中创建了一个新的Haxe JS项
  • 通用构建枚举的一些错误

    Solved对于第一个宏来说 编写这并不是最容易的 但我学到了很多东西 感谢 Gama11 为我指明了正确的方向 以及创造如此美丽事物的核心团队 Haxe And I even added some slick doc field stri
  • Haxe 中的常量

    如何在 Haxe 中创建公共常量 我只需要旧的模拟const in AS3 public class Hello public static const HEY String hey 在 Haxe 中声明常量的常用方法是使用static a
  • Mac 上的 ActionScript 开发

    我知道适用于 Windows 的 FlashDevelop 但是在 Mac 上开发 ActionScript 或 haxe 怎么样 除了 eclipse flex builder 和 FDT 的 Flex 插件之外 还有什么好的 IDE 可
  • FlashDevelop Haxe (Flash) 调试器

    FlashDevelop中有Haxe的调试器吗 FlashDevelop 现在附带一个运行良好的 Haxe 调试器 仅限 Flash 目标
  • 在 Haxe 中传递任意函数参数列表

    在 ActionScript 中我可以使用 在函数声明中 因此它接受任意参数 function foo args void trace args length 然后我可以调用传递数组的函数 foo apply this argsArray
  • 使用 Haxe 将参数传递给延迟函数

    你知道是否有一种简单的方法可以将一些参数传递给通过调用的函数 haxe Timer delay func delay 我所说的 简单 是指无需创建任何自定义计时器 您可以使用bind https haxe org manual lf fun
  • 如何在 FDT 内导航/更新 Haxe SDK?

    在 OSX 上 FDT 在此处提供 Haxe SDK Applications FDT 5 app Contents FDT5 haxe haxe 2 09 osx 因为它位于 OSX 包内部 所以我无法导航到它 我如何 在首选项中选择它
  • 作为 JavaScript 开发人员如何学习 Haxe

    我使用 JS 已经三年了 我想使用 OpenFL 制作移动应用程序 不过 我不知道Haxe 而且我也不知道其他编程语言 不过 学习类 继承等我还是很舒服的 另外 据我所知 OpenFL 在性能方面优于 Adob e AIR 并且您需要了解
  • 错误:失败并出现错误:没有这样的项目:polymod

    我正在尝试制作一个 Friday Night Funkin mod 但是当我编译它时 出现以下错误 Error Could not find haxelib polymod does it need to be installed 所以我当
  • 在 Haxe/OpenFL 应用程序中使用 SWF 动画

    尽管 Haxe 在 NME OpenFL 方面取得了巨大成就 但从 AS3 开发过渡的最大问题是资产 尽管 Haxe 与 as3 很相似 而且 OpenFL 试图提供熟悉的 API 但缺乏 SWF 支持吓跑了许多开发人员 我对此主题的研究使
  • 迭代器(不是迭代器)上的 Lambda 迭代

    我经常读到在迭代器上调用 Lambda 函数是不可能的 直到现在我也一直抱着这样的信念 然而 阅读 Franco Ponticelli 和 Lee McColl Sylvester 所著的 Professional Haxe 一书 了解如何
  • Haxe 自定义元数据到宏调用

    假设我已经创建了一个可以像这样使用的构建宏 build macros SampleMacro build arg class Main 是否可以将其转换为自定义的速记元数据 samplemacro arg class Main 有这方面的文
  • Haxe + Webpack 导出空对象

    我正在尝试在 Haxe 编译器导出的 JS 上运行 webpack dev server 我正在使用 hxgenjs 库将 haxe 输出拆分为单独的模块 并尝试通过 webpack 合并它们 以使用热模块替换功能 一切似乎都正常 但输出是
  • Haxe 中参数的数量可变

    我正在寻找一种在 Haxe 中做这样的事情的方法 function foo args for arg in args 这里有人可以帮助我吗 这个问题很老了 所以 我以文档的形式回答 Haxe 从 4 2 开始支持剩余参数 function
  • 使用Haxe宏进行条件编译,而不是#if #end

    假设我们有一个 Local 类 class Local static inline public var logLevel Int 3 以及一些功能 Tool debug s String compiled if logLevel gt 0
  • Haxe 摘要 - 使用 @:from 时可以隐式转换数组吗?

    我试图将一种类型的数组视为另一种 抽象 类型的数组 当我使用抽象的基础类型时 它工作得很好 但是当我尝试使用另一种类型 使用定义的 from关键字 我构建失败 如果我使用显式的 它会起作用cast 但我想知道 有什么办法可以解决这个问题 我
  • 在哪里放置 OpenFL android 扩展的可绘制资源?

    我正在为我的 OpenFL 应用程序制作一个 android 扩展 当我从 Haxe 调用函数时 它应该显示一条通知 我需要在我的扩展项目中放置一个可绘制图标 因为通知需要一个图标 但是 Java 文件扩展了一个 Extension 类 该

随机推荐