问题标签 [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.
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 等,也许存在更好的东西?
common-lisp - 如何访问元对象/槽定义槽?为什么 slot-value 可以访问对象的插槽而不是元对象的插槽?
我在访问插槽定义之外的插槽时遇到问题。我可以检查类对象,查看它们的槽定义,甚至获得一些关于槽定义的标准信息。但是,我无法访问有关插槽定义的用户定义信息。
我已经在谷歌上搜索了很长一段时间,最后阅读了CLOS 和 MOP 规范、一些Lisp Cookbook、关于一些MOP 概念以及StackOverflow上的一些 相关 问题 ,但没有多大帮助。我什至阅读了一段SBCL 的 implementations,但无济于事。
从我能够放在一起的部分中,我可以SLOT DEFINITION
通过一些功能访问 a 的许多插槽,例如访问using的NAME
插槽(这当然很有帮助),但是对于没有的插槽我不能这样做这些功能之一。例如,在.SLOT DEFINITION
CLOSER-MOP:SLOT-DEFINITION-NAME
REFERENCES
MITO
DEFCLASS
这是一个最小的工作示例:
请注意,我没有访问任何数据库或任何类似的东西,尽管我正在使用MITO
(如果我不使用任何自定义插槽,我认为我不会遇到这个问题,比如提供的REFERENCES
那个MITO
)。这只是简单的 CLOS/MOP 操作。
通常的输出类似于(确切的输出取决于您的 Common Lisp 实现):
所以,显然,我们确实有一个REFERENCES
插槽。但是,之后INSPECT
,当我们尝试到SLOT-VALUE
slot 时,我们得到一个SLOT-MISSING
错误(仅显示回溯的第一行):
那么如何访问“插槽” REFERENCES
?这真的是一个插槽吗?如果没有,我该如何访问它?为什么在这种情况下一个简单的SLOT-VALUE
不起作用?
如果我想了解更多有关此主题的信息,您能否指出一些有关此主题的文档以提供更多信息?
SBCL 1.4.5.debian
如果这可能很重要,我将其用作我的 lisp 实现。
lisp - 如何使用元类使类的实例继承自特定的超类
我正在尝试为 common lisp 实现 json 序列化 API。为了实现这一点,我定义了一个名为json-class
. 这个元类定义了:ignore
用于忽略对象的特定槽的槽选项。由于我使用 yason 进行序列化过程,因此我想将该方法专门yason:encode-slots
用于使用 metaclass 的类的每个对象json-class
。我能想到的唯一方法是使所有对象从可用于专门化方法json-class
的类型实例化。json-object
我试图复制的行为与 MOP 已经实现的行为相同,该行为包含在每个类中,使用standard-class
生成类型的对象standard-object
。
raku - 一起定义具有多个 API 版本的类
这显然是不可能的...
这与
那么甚至可以在一个程序中use
使用不同的s,相同的名称吗?api
更新:如果它们包含在不同的文件中,这是获得的错误:
java - Groovy 自定义 MetaClassImpl 导致“找不到匹配的构造函数”
这是一个hello world级别的groovy mop程序,只是想MetaClassImpl
用我自己的自定义,但似乎groovy不允许,这是我的代码:
MyMetaClassImpl.java
Person.groovy
PersonGroovyMain.groovy
下面的输出错误:
这个问题已经困扰我两天了,我不想用DelegatingMetaClass
,希望有人能帮助我。
perl - Package::Stash::PP (Moose) 中的魔法 typeglob 别名
我一直在查看Package::Stash::PP(Class::MOP::Package使用无 PP 版本)。我试图了解它是如何工作的,并在里面偶然发现了这个块sub add_symbol
:
块的作用是什么?它似乎没有做任何事情,因为匿名 typeglob 分配是范围的本地。我检查了符号表并使用了 Devel::Peek::Dump(),但没有看到提到的代码块的意义。
我尝试搜索但没有成功找到提到的票:<20120710063744.19360