问题标签 [mop]

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 回答
392 浏览

perl - 这是 Moose Perl 的一个很好的替代品吗?

我一直在寻找 Moose 的替代品(现代面向对象的 Perl) 因为 Moose 很慢,我已经看到了几个与这个问题相关的帖子,我不想要那个。 来自同一创作者的示例https ://www.youtube.com/watch?v=ugEry1UWg84&feature=youtu.be&t=260

所以我从 moose 的同一个创造者那里找到了这个替代方案:

https://metacpan.org/pod/MOP#DESCRIPTION MOP - Perl 5 的元对象协议

该模块以最小的开销实现了 Perl 5 的元对象协议,并且没有非核心依赖项(最终)。

使用 UNIVERSAL::Object:

https://metacpan.org/pod/UNIVERSAL::Object

这是 Moose 的一个不错的选择和替代品,有人测试过这个软件吗?

相关帖子: https ://www.perlmonks.org/?node_id=1220917

谢谢。

注意:我忘了提到我知道 Moo、Mouse 等,也许存在更好的东西?

0 投票
1 回答
120 浏览

raku - “要求”在哪里定义?

我一直在寻找Rakudo的源代码来实现require,首先是出于好奇,其次是因为我想知道它是否正在返回一些东西。

我查了一下sub require,它返回了这个 hit,这实际上似乎是 require 的来源,但它被称为sub REQUIRE_IMPORT. 它返回Nil并被声明为这样,这几乎回答了我原来的问题。但现在我的问题是:从那个 sub 到的映射在哪里require?它真的是该功能的实现吗?是否还有其他一些以这种方式声明的函数?

0 投票
1 回答
280 浏览

common-lisp - 如何访问元对象/槽定义槽?为什么 slot-value 可以访问对象的插槽而不是元对象的插槽?

我在访问插槽定义之外的插槽时遇到问题。我可以检查类对象,查看它们的槽定义,甚至获得一些关于槽定义的标准信息。但是,我无法访问有关插槽定义的用户定义信息。

我已经在谷歌上搜索了很长一段时间,最后阅读了CLOS 和 MOP 规范、一些Lisp Cookbook、关于一些MOP 概念以及StackOverflow上的一些 相关 问题 ,但没有多大帮助。我什至阅读了一段SBCL 的 implementations,但无济于事。

从我能够放在一起的部分中,我可以SLOT DEFINITION通过一些功能访问 a 的许多插槽,例如访问using的NAME插槽(这当然很有帮助),但是对于没有的插槽我不能这样做这些功能之一。例如,在.SLOT DEFINITIONCLOSER-MOP:SLOT-DEFINITION-NAMEREFERENCESMITODEFCLASS

这是一个最小的工作示例:

请注意,我没有访问任何数据库或任何类似的东西,尽管我正在使用MITO(如果我不使用任何自定义插槽,我认为我不会遇到这个问题,比如提供的REFERENCES那个MITO)。这只是简单的 CLOS/MOP 操作。

通常的输出类似于(确切的输出取决于您的 Common Lisp 实现):

所以,显然,我们确实有一个REFERENCES插槽。但是,之后INSPECT,当我们尝试到SLOT-VALUEslot 时,我们得到一个SLOT-MISSING错误(仅显示回溯的第一行):

那么如何访问“插槽” REFERENCES?这真的是一个插槽吗?如果没有,我该如何访问它?为什么在这种情况下一个简单的SLOT-VALUE不起作用?

如果我想了解更多有关此主题的信息,您能否指出一些有关此主题的文档以提供更多信息?

SBCL 1.4.5.debian如果这可能很重要,我将其用作我的 lisp 实现。

0 投票
2 回答
231 浏览

lisp - 如何使用元类使类的实例继承自特定的超类

我正在尝试为 common lisp 实现 json 序列化 API。为了实现这一点,我定义了一个名为json-class. 这个元类定义了:ignore用于忽略对象的特定槽的槽选项。由于我使用 yason 进行序列化过程,因此我想将该方法专门yason:encode-slots用于使用 metaclass 的类的每个对象json-class。我能想到的唯一方法是使所有对象从可用于专门化方法json-class的类型实例化。json-object我试图复制的行为与 MOP 已经实现的行为相同,该行为包含在每个类中,使用standard-class生成类型的对象standard-object

0 投票
1 回答
72 浏览

raku - 一起定义具有多个 API 版本的类

这显然是不可能的...

这与

那么甚至可以在一个程序中use使用不同的s,相同的名称吗?api

更新:如果它们包含在不同的文件中,这是获得的错误:

0 投票
1 回答
33 浏览

java - Groovy 自定义 MetaClassImpl 导致“找不到匹配的构造函数”

这是一个hello world级别的groovy mop程序,只是想MetaClassImpl用我自己的自定义,但似乎groovy不允许,这是我的代码:

MyMetaClassImpl.java

Person.groovy

PersonGroovyMain.groovy

下面的输出错误:

这个问题已经困扰我两天了,我不想用DelegatingMetaClass,希望有人能帮助我。

0 投票
1 回答
61 浏览

perl - Package::Stash::PP (Moose) 中的魔法 typeglob 别名

我一直在查看Package::Stash::PPClass::MOP::Package使用无 PP 版本)。我试图了解它是如何工作的,并在里面偶然发现了这个块sub add_symbol

块的作用是什么?它似乎没有做任何事情,因为匿名 typeglob 分配是范围的本地。我检查了符号表并使用了 Devel::Peek::Dump(),但没有看到提到的代码块的意义。

我尝试搜索但没有成功找到提到的票:<20120710063744.19360