metaprogramming

    1热度

    3回答

    我是一个vb.net新手,所以请耐心等待。是否有可能在visual basic(我使用Visual Basic 2005)中为类创建属性(或属性)?所有的网络搜索元编程让我无处可寻。这里有一个例子来说明我的意思。 public class GenericProps public sub new() ' ??? end sub public sub add

    10热度

    2回答

    我的模块中有以下模板Haskell代码,这是更大的应用程序的一部分。 $(derive makeFoldable ''JStatement) 我怀疑是可折叠的所生成的背景不完全是原来脑子里想我,但我不能找到一种方法来验证这一点。所以,最好只使用ghci,是否可以查看生成的实例? 我尝试了以下,并得到一个语法错误,我猜这是因为我做错了™。 > derive makeFoldable ''JSta

    2热度

    3回答

    我想玩编译时在C++编译器中合成常量字符串哈希值的奇特游戏。这可以让我用一个标识符替换字符串,大大节省了代码的大小和复杂性。 为了编程的清晰和简单,如果我可以在编译时使用简单的内联字符串(如“Hello”,它们是编译时常量指针指向编译时常量字符)进行检查和计算,那将非常棒。 如果我可以在编译时编入索引,我可以创建一个模板元程序来执行我想要的操作。但目前还不清楚C++标准本身是否将ct常数数组的ct

    5热度

    2回答

    当使用Grails/GORM持久化域对象时,我经常发现自己想知道save()调用失败的原因。 这可以很容易地通过增加逻辑来解决: if (!o.save()) { o.errors.allErrors.each { println it } } 然而,增加这个无论我做一个.save()增加了很多重复的代码。本着DRY的精神,我想配置Grails/GORM来自动将任何保存错误输出到控

    2热度

    9回答

    我曾经和尊重过的人曾经向我表示,应用程序代码中不应该有任何需要使用反射的情况,而且应该只在框架中使用。他是从J2EE背景来讲的,我在该平台的专业经验通常会证明这一点;尽管我已经使用Java编写了一次或两次反射式应用程序代码。 我对Ruby on Rails的体验完全不同,因为Ruby几乎鼓励您编写动态代码。如果没有反射和元编程,许多Rails给你的东西都是不可能的,许多相同的技术对你的应用程序代码

    3热度

    4回答

    我在一个目录中有一堆Python模块,都是派生类。我需要一个“runner”脚本,为每个模块实例化其中的类(实际的类名可以通过模块文件名构建),并在每个模块上调用“go”方法。 我不知道有多少模块是有的,但我可以列出所有的人都通过的东西通配符的目录,如“机器人_ *。PY” 我认为这是一些有关“元编程”,但怎么可能是最好的(最优雅的)方法呢?

    14热度

    5回答

    我最近在python中发现了metaclasses。 基本上在python元类是创建一个类的类。有很多有用的理由你为什么要这么做 - 例如任何类的初始化。在工厂注册类,对属性进行复杂的验证,改变继承的工作方式等等。所有这些都变得不仅可能而且简单。 但是在Python中,元类也是普通类。于是,我开始想,如果抽象可以有效走得更高,而且在我看来,它可以和: 元类对应于或实现某种模式中的角色(如GOF模式

    76热度

    7回答

    我在ployglot programming on the Java platform上阅读TheServerSide上的一篇文章。文章中的一些评论将元编程称为生成代码的能力(可能即时)。 元编程能够在运行中生成代码,还是能够在运行时将方法和属性注入现有对象(如Python,Ruby和Groovy允许的一些动态语言)。

    2热度

    4回答

    我想实现一个Rails User模型,该模型有一个名为password的DB列。我想使它这样,当我打电话...... user_instance.password = 'cleartext' 的方法,像这样把它放在实例之前散列明文: Digest::SHA1.hexdigest(cleartext) 我用回调试过,但问题在于,每次保存用户时都会浪费pw,即使pw未更新也是如此。所以它会一遍

    2热度

    1回答

    在Ruby中,有没有一种方法可以确定方法的名称,类似于“类”方法如何返回对象的类型? 例如: def example_method puts method_name end #=> "example_method"