草庐IT

Metaprogramming

全部标签

javascript - 在 Javascript/Coffeescript/jQuery 中是否有与 Ruby 的发送等效的东西?

如果我在字符串中有一个方法名称,在Ruby中我可以使用send来动态调度方法,例如method_name="delete"sendmethod_name我也可以利用插值:method_name="add"send"#{method_name}_task",args我在javascript中定义了2个函数,一个用于删除,一个用于更新。每个按钮都是动态添加的,目前,只有delete方法通过button.on"click"绑定(bind),例如b.on"click",(event)->event.preventDefault()#stopsubmissionviapostbackthis_b

javascript - Javascript 中是否可以进行元编程?

在我的日常工作中,我碰巧编写了一个类似于LINQ表达式的链式javascript函数来查询JSON结果。varResult=from(obj1).as("x").where("x.id=5").groupby("x.status").having(count("x.status")>5).select("x.status");它完美地工作并给出了预期的结果。我想知道如果代码是这样写的(以更易读的方式),这看起来很棒varResult=fromobj1asxwherex.statusgroupbyx.statushavingcount(x.status)>5selectx.status;

php - Javascript 动态变量名

我需要这样的东西。varthing_n?>=想要创建这样的东西:varthing_342='32' 最佳答案 您需要一个对象,并将其用作关联数组/哈希/无论您习惯如何调用它。varthing={};thing[342]='32';或varthing={342:'32'}; 关于php-Javascript动态变量名,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4226987/

java - Groovy 的 ExpandoMetaClass 的范围?

Groovy公开了一个ExpandoMetaClass这允许您动态地将实例和类方法/属性添加到POJO。我想用它向我的Java类之一添加实例方法:publicclassFizz{//...etc.}Fizzfizz=newFizz();fizz.metaClass.doStuff={Stringblah->fizz.buzz(blah)}这相当于将Fizz类重构为:publicclassFizz{//ctors,getters/setters,etc...publicvoiddoStuff(Stringblah){buzz(blah);}}我的问题:这是否仅将doStuff(Strin

Java 反射与代码生成

今天我想知道为什么像`Hibernate这样的框架在编译/应用程序启动期间使用反射而不是代码生成(例如使用像BCEL或ASM这样的库)。是否由于历史原因(编写Hibernate时没有这样的库可以动态生成字节码)现在每个人都使用这种方法?我认为使用生成代码的方法会比使用反射的方法更快。 最佳答案 是的,Hibernate可能会从代码生成中受益,尽管利润可能没有您想象的那么大。首先,Reflection在底层使用字节码生成,而且速度并不太慢。您不能仅使用字节码生成来做某些事情。例如。反射允许您访问私有(private)字段并调用私有(p

java - Pluggable Annotation Processor API 可以检索源代码注释吗?

我正在使用带有Java6+的可插入注释处理API来自动创建一些部署XML文件。这些XML文件的一部分包含对象的描述。描述总是与类本身关联的Javadoc的内容相同。我可以强制注释成为@Block注释的一个字段,但会重复信息。有没有办法在注解处理过程中获取类/类型注解的内容?在这个例子中,我想在注释处理期间得到“我的block的一个很好的描述”。/***Anicedescriptionofmyblock**/@BlockpublicclassCustomBlock{} 最佳答案 我似乎总能在SO上发帖后立即找到答案。为了将来引用,这是

C++模板特化问题

我需要一个C++模板,在给定类型和该类型的对象的情况下,它可以根据类型是否为整数做出决定,同时能够访问实际对象。我试过了templatestructC{enum{Value=0};};templatestructC{enum{Value=N};};但它不起作用。有什么方法可以实现类似的目标吗?编辑我试图实现的是这样的,它会在编译时发生:if(typeisint){returnIntWrapperelse{returntype}您实际上可以将指针或引用传递给模板实例化中的对象,如下所示:structX{staticconstintValue=5;};templatestructC{sta

c++ - 我对编译时关联容器有哪些选择?

我需要一种机制,给定类型T1和T2产生第三种类型T3如果对(T1,T2)有效,否则生成特殊的Null类型。我目前将T1定义为一个类,在该类中我可以将T2的有效选项集映射到适当的T3。我正在寻找一种语法,以便可以在T1的定义中内联定义一组有效的T2。这是解决问题的一种方法,使用重载决议:#includestructX{};structY{};structA{};structB{};structC{};structS//T1{Xmember(A){returnX();}//T2=A,T3=XYmember(B){returnY();}//T2=B,T3=Y};structNull{};te

c++ - 为什么允许嵌套类模板的部分特化,而不允许完全特化?

templatestructA{templatestructB{};.templatestructC{};};templatetemplatestructA::B{};//error:enclosingclasstemplatesarenotexplicitlyspecializedtemplatetemplatestructA::C{};//ok那么,如果外部类也不是特化的,那么为什么不允许对内部嵌套类(或函数)进行显式特化呢?很奇怪,如果我只是部分通过简单地添加一个虚拟模板参数来专门化内部类,我就可以解决这个问题。使事情变得更丑陋和更复杂,但它有效。我会将完全特化视为部分特化的子集

C++ Vector Template Per-Component 操作

我正在重写项目的vector数学部分,我想根据vector的类型和维数来概括vector。vector表示类型为T的N维vector。templatestructvector{Tdata[N];};我需要重写许多数学函数,其中大部分将在每个组件的基础上运行。加法运算符的直接实现如下所示。templatevectoroperator+(vectorlhs,vectorrhs){vectorresult;for(inti=0;i我的问题:有没有办法(通过模板技巧?)在不使用for的情况下实现它循环和一个临时变量?我知道编译器很可能会展开循环并将其优化掉。我只是不喜欢以这种方式实现所有对性能