问题标签 [dispatch-table]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
166 浏览

python - 从另一个函数名计算一个函数名

在 python 3.4 中,我希望能够为测试目的制作一个非常简单的调度表。这个想法是有一个字典,键是要测试的函数名称的字符串,数据项是测试函数的名称。

例如:

这个想法是我在某个地方有一个函数名称列表。在此示例中,我手动创建了一个字典,将这些名称映射到测试函数的名称。测试函数名称是函数名称的简单扩展。我想从函数名称列表中计算整个字典(这里是myTestList)。

或者,如果我可以在没有字典的情况下做同样的事情,那也很好。我尝试从 myTestList 中的条目构建一个新字符串,然后使用local()它来设置调用,但没有任何运气。字典的想法来自Python 3.x 文档

0 投票
3 回答
557 浏览

objective-c - Where are Objective-C selectors registered/stored?

I don't quite get the Objective-C selectors. The problem is: Where are Objective-C selectors stored ?

How do Objective-C Compiler and Runtime System work, so that they convert the method names into SEL ?

0 投票
1 回答
288 浏览

c - 在 C 中跨多个源文件创建调度表注册函数

如何在 C 中实现动态调度表

这与链接问题本质上是相同的问题,所以......

由于您的 Strategy.c 显然已经通过名称 ( ) 知道策略实例,#include "XYstrategy.h"您可以全力以赴并使用头文件而不是实现文件将您的策略​​传达给中央调度程序:

这与问题中的明确意图相反。这是他如何静态完成的示例,但希望模块在编译时动态注册自己。

让我尝试提供一个我为自己的目的而苦苦挣扎的例子......

我有一个微控制器,我想用它来读取各种报告温度和/或湿度的传感器。我有一个中央核心程序,负责格式化返回的数据并将其提交到记录在 RRD 中的 Web 服务器。

我不想构建一个包含每种传感器类型的所有不同功能的大型单片程序,而是希望能够将特定子集构建到加载到微控制器上的软件中,该软件与安装在该特定控制器上的传感器相对应。

为此,我希望能够为具有三个功能的每个传感器编写一个通用驱动程序:

sensor_startup函数将负责启动传感器,确保它们已正确配置并处于准备好read_sensor调用的状态。如果此过程因任何原因失败,则返回false,否则返回true

read_sensor函数将导致最多读取传感器,其结果分别存储在和max_count指向的数组中。读取的传感器数量将存储在.temphumiditycount

sensor_shutdown功能将执行任何必要的内务处理,以将传感器和支持电子设备恢复到最低功耗配置。

这些中的每一个都包含在一个单独的 .c 文件中,该文件可能有一个相应的 .h 文件来定义相关常量、调用相关库等。

我想要一个包含在 .c 或 .h 文件中的主 Sensor.h 文件,它定义:

然后我希望每个驱动程序文件都能够使用宏(或函数)在编译时在 sensor_table 的下一个开放槽中注册特定于类型的函数。

我希望在 Sensor.c 的全局命名空间中将传感器表声明为:

MAX_SENSOR_TYPES将在 Sensor.h 中定义,反映可以选择的最大驱动程序数量)。

这甚至可能吗?如果是这样,有人可以提供一个句法示例吗?在这种特定情况下,我在 Particle Dev 环境中为 Particle Photon 进行编码,但如果我可以使代码也可移植到 Arduino IDE 以将其与 ESP8266 板一起使用,我会很高兴。

0 投票
1 回答
4445 浏览

python - 如何在 Python 调度表中传递参数

我正在尝试通过以下方式构建调度:

我希望该函数仅在使用以下命令调用时才执行:

期望它打印:

但它打破了给予:

正确的方法是什么?

此外,两个函数run_nn()run_svm()甚至在没有被调用的情况下就被执行了。我不想要那个。我怎样才能避免它?

0 投票
4 回答
441 浏览

java - Java:具有数百万个项目的 HashMap 性能与 if-else 搜索数字范围

如果可以的话,寻求一些建议。我在我的 PlayStation 模拟器中有一个方法(基于 Java 的大学论文已经完成)。它需要一个整数内存地址,然后返回该地址的字节——根据地址将读取重定向到 RAM、BIOS ROM、给定的 I/O 端口等。目前,这是使用大量 if-else 案例来实现的,这些案例检查地址范围并相应地从正确的位置读取,返回字节。

这给我带来了大约 9% 的整体运行时间的性能损失。我想我可以使用调度表来改进这一点 - 本质上是一个带有自动装箱整数键的 HashMap 代表内存地址和一个 lambda 值来根据地址处理字节的返回。现在请记住,考虑到 PS1 的内存映射,大约有 260 万个不同的可能地址,这会使用更多的内存——这很好。

令我困惑的是,这比 if-else 语句的性能稍差——大约占总运行时间的 12%。有没有更好的方法来做我正在做的事情?我不能使用数组解决方案(地址作为原始 int 索引和存储在该索引处的 lambda),因为地址空间中存在间隙,如果没有太多的内存使用量,这将无法处理。

我很欣赏任何其他可能会降低这个数字的想法 - 我意识到 Java 不是一种很好的仿真语言,但我的部分论文证明它可以工作(确实如此)。非常感谢。

问候,菲尔

编辑:

下面是 readByte 方法的完整代码(地址被转换为 long 以允许将较低地址与较高地址进行比较,其值对于普通 int 为负):

0 投票
0 回答
90 浏览

java - 当对象在java中引用其子类对象时,对象的调度表包含什么?

根据链接中的这个答案https://stackoverflow.com/a/6606490/4816065

在 Sun 的一些 Java 虚拟机实现中,对类实例的引用是指向句柄的指针,句柄本身就是一对指针:一个指向包含对象方法的表,另一个指向代表对象的类型,另一个是从堆中为对象数据分配的内存。

因此,给定两个类 A 和 B 如下:

在主要方法中,我制作对象如下:

它只有 m1(因为 Object 引用是 A 类型)还是有 m1 和 m2(因为引用的对象是 B 类型)?

0 投票
3 回答
244 浏览

perl - Perl:需要帮助将 if-elsif-else 转换为更简单的东西

我一直在阅读调度表,并大致了解它们是如何工作的,但是我在将我在网上看到的内容并将这个概念应用到我最初编写的一些代码中遇到了一些麻烦,因为 if-elsif 是一团糟-else 语句。

我通过 using 配置了选项解析GetOpt::Long,反过来,这些选项在%OPTIONS哈希中设置一个值,具体取决于使用的选项。

以下面的代码为例......(更新更多细节

我想把上面的代码变成一个调度表,但不知道怎么做。

任何帮助表示赞赏。

0 投票
1 回答
73 浏览

c++ - 在调度表中使用类外的模板类方法

我正在编写这个从接口继承的小模板类。在我的类中,我声明了一个我想在外面使用的变量,并将它放入一个调度表中。当我尝试编译我的程序时,它会抛出一个错误

这是我的源代码:

我一直在尝试以多种不同的方式解决这个问题,但没有一种方法能奏效。我该如何解决?先感谢您 :)

0 投票
1 回答
99 浏览

perl - 在 MVC 中哪里放置调度表?

调度表(或调度方法)既是表(模型)又是路由器/控制器。

想象一个选项卡式导航,其中可能有 30 个选项卡供不同的最终用户使用。每个选项卡本质上是一个拥有自己的控制器和视图的页面。就我而言,调度表包含选项卡的键,然后包含每个选项卡的数据(路径、显示名称、可见性等)。

最初我有一个 TabController 和 TabView。控制器内部是一个调度表;但是它似乎并不符合 MVC。当只有 3 个选项卡时看起来不错,但当它增长时就不同了,尤其是当它需要安全修剪或过滤视图时。

将其移至模型是有意义的,因为它更多地被视为数据表。然而,因为它是 Perl(和一个调度表),所有相应的包也必须被加载。所以这个 TabModel 正在加载许多控制器(在某些情况下是视图)。我不是特别喜欢在模型中加载/引用任何控制器,所以加载 multi 感觉更糟。

这种情况是否有最佳实践或示例?


附录

试图提供一些更切实的东西。我将尝试围绕一个临时的 Web 应用程序来构建它。这只是一个概念性的例子,没有完全工作并且遗漏了很多;但希望应该添加更多的描述和上下文。它具有以下目录结构:

我不会分解 index.pl,但它本质上是解析参数并指向 DashboardController::dashboard。

仪表板控制器

关于控制器

选项卡模型

仪表板视图

0 投票
1 回答
1237 浏览

c - 什么是调度表?如何在 C 中实现它?

首先让我说我知道函数指针是如何工作的。如果您想更详细地解释它们,请继续,但是我问您的是如何使用 C 在调度表中实现它们。

我已经搜索了调度表是什么,但除了对它可能如何工作的模糊理解之外,我真的无法理解任何东西。

请善意分享它的实际用途以及如何在 C 中创建自己的调度表。非常感谢帮助。