如何重载 ActionScript 中的函数?

2023-12-23

我想要一个能够接受各种类型的函数。 AS3不支持直接重载...所以我不能执行以下操作:

//THIS ISN'T SUPPORTED BY AS3

function someFunction(xx:int, yy:int, someBoolean:Boolean = true){
    //blah blah blah
}
function someFunction(arr:Array, someBoolean:Boolean = true){
    someFunction(arr[0], arr[1], someBoolean);
}

我怎样才能解决这个问题并仍然拥有一个能够接受各种类型参数的函数?


如果您只想能够接受任何类型,您可以使用*允许任何类型:

function someFunction( xx:*, yy:*, flag:Boolean = true )
{
  if (xx is Number) {
    ...do stuff...
  } else if (xx is String) {
    ...do stuff...
  } else {
    ...do stuff...
  }
}

如果您有大量不同的参数,其中顺序并不重要,请使用选项对象:

function someFunction( options:Object )
{
  if (options.foo) doFoo();
  if (options.bar) doBar();
  baz = options.baz || 15;
  ...etc...
}

如果参数数量可变,则可以使用:

function someFunction( ... args)
{
  switch (args.length)
  {
    case 2:
      arr = args[0];
      someBool = args[1];
      xx = arr[0];
      yy = arr[1];
      break;
    case 3:
      xx = args[0];
      yy = args[1];
      someBool = args[2];
      break;
    default:
      throw ...whatever...
  }
  ...do more stuff...
}

对于需要调用多个类的公共函数的情况,您应该指定每个类公共的接口:

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

如何重载 ActionScript 中的函数? 的相关文章

随机推荐

  • 如何扩展/继承组件?

    我想为 Angular 2 中已经部署的一些组件创建扩展 而不必几乎完全重写它们 因为基础组件可能会发生更改 并希望这些更改也反映在其派生组件中 我创建了这个简单的示例来尝试更好地解释我的问题 具有以下基本组件app base panel
  • 了解 JNDI

    JNDI 就像是一张增强版的地图 对吧 我使用键来查找对象的引用 另外 什么是InitialContext 我似乎不太明白这个想法 从概念上讲 JNDI 就像System getProperties 使用类固醇 System getProp
  • Nexus 6 融合位置提供程序 getSpeed 返回 0

    运行 Android 5 0 1 的 Nexus 6 设备上安装的 Google Play 服务版本 6 7 76 设备设置 位置模式设置为 仅限设备 在 Nexus 6 上 当使用具有 PRIORITY HIGH ACCURACY 的融合
  • JDK7 SSL 连接问题忽略不支持的密码套件:TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256

    我正在建立 SSL 连接 作为客户端 并根据这篇 Oracle 文章 http docs oracle com javase 8 docs technotes guides security SunProviders html SunJSS
  • AWS ECS 503 服务在部署时暂时不可用

    我正在为我的应用程序使用 Amazon Web Services EC2 容器服务和应用程序负载均衡器 当我部署新版本时 我收到 503 服务暂时不可用大约 2 分钟 这比我的应用程序的启动时间要长一点 这意味着我现在无法进行零停机部署 是
  • 拉姆达捕获

    我总是对 lambda 捕获感到困惑 并且不知道变量是通过引用捕获还是通过值捕获 例如 如果我有 a 我不知道是否a通过值或引用捕获 我认为获得它的一个简单方法是通过示例 因此 让我们为每种情况准备一个 如果有多种表达同一事物的方式 则更多
  • 在 php 类中使用 html 是否不好?

    在类函数中使用 html 有什么问题吗 我在 DOM 中调用它 因此不需要返回字符串 public function the contact table gt div some html here div div class staff m
  • 在django中使用分页时如何返回最后一页?

    在一个简单的论坛中 我使用本机 django分页 https docs djangoproject com en 1 8 topics pagination 我希望用户在发布帖子后能够被引导至主题的最后一页 这是视图 login requi
  • Python:确保我的类仅使用最新协议进行腌制

    我正在开发一个只能使用协议 2 以及 Python 3 以上 进行有意义的腌制的类 当使用较旧的协议时 会发生难以追踪的错误 我希望为该类的用户节省一些调试的麻烦 因此我希望该类在使用小于 2 的协议进行 pickle 时立即引发异常 我怎
  • 存储序列化数组时进行清理

    如果我将序列化数组存储到 mysql 数据库 我应该在使用序列化函数之前或之后进行清理吗 或者我什至需要消毒吗 例如 details name mysql real escape string POST name details email
  • iOS 应用程序中的点赞按钮

    有谁知道如何将 Facebook 喜欢 按钮放入 iOS 应用程序中 我已经尝试过这里描述的方法博客文章 http petersteinberger com 2010 06 add facebook like button with fac
  • 使用 SQL 从 Oracle 数据库插入和检索 BLOB 数据的方法有哪些?

    我尝试使用 SQL Developer 插入 BLOB 数据 但我找不到实际用于插入 BLOB 数据的插入语句 除此之外 数据库速度确实很慢 对于小文件 它执行得很好 但是当我尝试将 50 mb avi 文件导入 BLOB 时 花了 3 4
  • Ruby Integer()、Array() 等——它们是什么?他们来自哪里?

    我有时遇到过 Array value String value 和 Integer value 形式的转换 在我看来 这些只是调用相应 value to a value to s 或 value to i 方法的语法糖 所以我想知道 这些是
  • Vuex如何处理api错误通知?

    两周前我开始使用 Vuex 我意识到 Vuex 非常适合处理应用程序的状态 但是 API调用的错误很难处理 当我从服务器获取数据时 我会调度一个操作 当数据成功返回后 当然一切都好了 但是当错误发生时 我改变了状态 我不知道如何通过Vuej
  • 通过 CSS 进行图像缩放:是否有 -moz-crisp-edges 的 webkit 替代品?

    我有一张像素为 100x100 的图像 我想显示它两倍的大小 所以 200x200 我想通过 CSS 来完成 而不是通过服务器来完成 几年以来 所有浏览器都对图像进行了抗锯齿处理 而不是按像素缩放 Mozilla 允许指定算法 image
  • 什么时候静态生命周期不合适?

    我在网上找到了很多有关 Rust 生命周期的信息 包括有关静态生命周期的信息 对我来说 在某些情况下 你必须保证引用比所有东西都更长寿 这是有道理的 例如 我有一个要传递给线程的引用 编译器要求将该引用标记为静态 在这种情况下 这似乎是有意
  • 如何在 Chrome 开发工具控制台中获取 JSON 输出?

    有没有一种方法可以在控制台中以良好的方式输出 json 我只是将 gt 对象 作为树根 并且必须手动浏览树 这很烦人 最好的情况是在该对象中搜索字符串 或者扩展一切也可以 有任何想法吗 之前被问到Chrome 控制台有没有办法在控制台输出中
  • 当从 IntelliJ 运行并使用 setcap 赋予网络嗅探权限时,Java 每隔几秒输出一次完整线程转储

    我正在编写一个使用 Pcap 库进行数据包嗅探的应用程序 为了让它发挥作用 我需要给出java二进制网络嗅探功能 以避免必须将其运行为root sudo setcap cap net raw cap net admin eip path t
  • 警告:mysqli_stmt::bind_param():变量数量与 C:\User..\ 上 148 上准备好的语句中的参数数量不匹配

    我正在插入一个新列大学名称 分支和性别 但突然它给了我这个错误 Warning mysqli stmt bind param Number of variables doesn t match number of parameters in
  • 如何重载 ActionScript 中的函数?

    我想要一个能够接受各种类型的函数 AS3不支持直接重载 所以我不能执行以下操作 THIS ISN T SUPPORTED BY AS3 function someFunction xx int yy int someBoolean Bool