zoukankan      html  css  js  c++  java
  • Ruby 元编程

    Ruby 随着美元在抽象的层面语言的编程支持。相当强大,假定商业模式有一个非常大的阶段似性别,我相信元编程让你节省大量的代码。

    对于一小部分,如以下。(在这里,我们只使用一个class_eval , 并且instance_eval, module_eval, Function.parameters等大量方法能够调用)

    比方 。依据业务需求。须要创建多个有相似方法名的类, 比方方法都命令为 include_xxx, append_xxx, delete_xxx,  xxxs等 xxx 为详细的业务类。

    那么能够设计例如以下一个类。 实现此功能。

    module Factory
        def  self.build_class(classname, cls_type)
            sub_clss = cls_type.to_s.downcase
            new_cls.class_eval <<-CLASSDEF
                def initialize
                    @container = []
                end

                def append_#{sub_clss}(key)
                    @container << key
                end

                def delete_#{sub_clss}(key)
                    @container.delete_if{|e| e == key}
                end

                def include_#{sub_clss}?(key)
                    @container.find {|e| e == key} ? true : false
                end
                def traverse

                    puts "notice container elements as follows"
                    @container.each {|e| puts e}
                end
            CLASSDEF
            new_cls
        end
    end

    执行结果例如以下:

    c1 = (Factory.build_class "C1", String)
    n = c1.new
    n.append_string("abc") 
    puts n.traverse
    puts ">>>>", n.include_string?

    ("abc")
    puts ">>>.",n.include_string?("123")
    n.delete_string("abc")
    puts n.traverse


    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    二叉平衡树
    红黑树
    [leetcode] LCP 比赛
    二叉搜索树
    面向对象的二叉树的实现
    二叉树的序列化与反序列化
    [leetcode] 基本计算器
    【pandas】玩转一行拆多行,多行并一行(分分合合你说了算)
    【VBA】数据溢出与解决
    【VBA】criterial 未找到命名参数
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4638698.html
Copyright © 2011-2022 走看看