- 浏览: 300985 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
class A def method_missing(name, *args) if name.to_s =~ /^*=/ if self.methods.include? name.to_s.delete("=").to_sym instance_variable_set("@#{name}".delete("="),args.first) else instance_variable_set("@#{name}".delete("="),args.first) self.class.send(:define_method,"#{name}".delete("=") ) do instance_variable_get("@#{name}".delete("=")) end end else super end end end
改进一下:
class A def method_missing(name, *args) if name.to_s =~ /^*=/ self.class.send(:define_method,"#{name}".delete("=") ) do args.first end else super end end end
测试:
测试:
a = A.new
a.jamst = 123
a.jamst #=>123
实现一个二维表单的查询和修改:
class Excell def method_missing(name, *args) p name if name.to_s =~ /^change.*=/ split_str = name.to_s.delete("=").split("_") eval %Q(self.row_#{split_str[1].to_i-1}[#{split_str[2].to_i-1}] = args.first) eval %Q(self.cols_#{split_str[2].to_i-1}[#{split_str[1].to_i-1}] = args.first) self.class.send(:define_method,"#{name}".delete("=")) do args.first end elsif name.to_s =~ /^equal*/ split_str = name.to_s.split("_") self.class.send(:define_method,"#{name}") do eval %Q( self.row_#{split_str[1].to_i-1}[#{split_str[2].to_i-1}] ) end return eval %Q( self.row_#{split_str[1].to_i-1}[#{split_str[2].to_i-1}] ) elsif name.to_s =~ /^*=/ self.class.send(:define_method,"#{name}".delete("=") ) do args.first end else super end end end # 初始化一个类 a = Excell.new a.row_size = 4 a.cols_size = 100 a.row_0 = *(1..100) a.row_1 = *(1..100) a.row_2 = *(1..100) a.row_3 = *(1..100) a.cols_size.times.each do |_| cos = [] a.row_size.times.each do |s| eval "cos << a.row_#{s}[#{_}]" end eval "a.cols_#{_} = cos" end #查询数值 a.equal_x_y #修改数值 a.change_x_y # a.equal_2_50 == a.row_1[49] # a.equal_2_50 == a.cols_49[1] #测试: a.equal_2_50 a.change_2_50 = 111 a.row_1[49]
发表评论
-
git仓库创建
2020-09-04 15:33 708推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 475nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 890业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 837class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 564require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 530针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1156<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 970gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 668def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 730sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 926链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 759Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1038tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1017例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 442关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1161def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1085[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1384登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1179pdf&excell&png # rend ...
相关推荐
下面,我们将详细探讨如何在SharePoint 2010中扩展Web Part自定义属性,以实现边栏字段的定制。 1. **理解Web Part属性** - Web Part属性是定义Web Part行为的关键元素,它们可以是任何类型的数据,如字符串、布尔...
在C#编程中,自定义属性(Custom Attributes)是一种元数据,可以附加到代码的不同元素(如类、方法、字段等)上,用于提供额外的信息。这些信息可以在运行时通过反射来访问,使得代码更加灵活且易于扩展。本篇文章...
在VB(Visual Basic)编程中,自定义属性是扩展对象功能的一种重要方式。自定义属性允许程序员根据项目需求创建特定的访问器,控制属性的读取、写入甚至执行更复杂的逻辑。本实例将深入探讨如何在VB中实现自定义属性...
在编程领域,自定义属性是扩展已有类或控件功能的一种常见方式,它允许开发者根据项目需求定义自己的特性。在本文中,我们将深入探讨如何在代码中实现自定义属性,并以一个具体的例子——"RainAnimation"来阐述这个...
在Java编程语言中,自定义注解是一种强大的工具,它允许开发者创建自己的元数据,以提供额外的信息或规范代码的特定行为。自定义注解可以应用于类、接口、方法、变量等不同层级,使得代码更加模块化,易于理解和维护...
在IT领域,自定义属性分组是一种常见的数据管理和组织方式,尤其在软件开发中,它允许用户根据特定需求对对象的属性进行分类和管理。在本案例中,"自定义属性分组"指的是用户可以创建自己的属性类别,以便更有效地...
在Delphi编程环境中,自定义控件的属性编辑是一项重要的任务,它允许开发者扩展标准控件的功能并提供更丰富的用户界面。本节将深入探讨如何在Delphi中创建自定义控件并定制其属性编辑器。 首先,创建自定义控件通常...
例如,如果我们有一个`CustomCollection`类,我们可以这样实现自定义属性: ```csharp [TypeConverter(typeof(MyCustomConverter))] public class CustomCollection : List { // 其他代码... } public class ...
属性对话框控件是在Windows系统中是常见的控件,那么在VC++中实现自定义的属性对话框控件后,会给我们的Windows应用的用户操作带在非常大的方便。学习综合使用属性对话框、弹出菜单等功能会给我们的VC++应用的功能...
首先,自定义属性是C#中一个强大的特性,允许我们在类中添加元数据,这些元数据可以用来提供额外的信息,如描述、默认值或验证规则。我们通过继承`Attribute`类来创建自定义属性。例如,我们可以创建一个名为`...
在本文中,我们将深入探讨如何使用C#编程语言和GDI+库在Visual Studio 2005环境下创建一个自定义的带属性控件。这个控件能够展示多行文字,支持不同颜色、字体以及排列方式,用户可以通过控件的属性窗口方便地调整...
在Ruby中,元编程的强大之处在于其语法简洁且易于理解,使得程序员可以轻松地实现动态行为。Ruby提供了多种元编程工具,包括: 1. **方法定义与调用**:Ruby允许在运行时定义和修改方法,如`define_method`函数可以...
自定义类允许开发者根据项目需求创建新的对象类型,这些对象具有特定的属性和方法。通过编写.as文件,我们可以定义一个类并赋予它特定的功能。 在这个"flash自定义类案例"中,我们可能有一个名为`MyCustomClass.as`...
而自定义属性则更进一步,它们允许我们为类、方法、字段等添加自定义元数据,这些元数据可以用于代码分析、文档生成、运行时检查等多种用途。 创建自定义属性涉及到定义一个属性类型(通常是派生自`System....
TLD文件定义了标签的名称、属性、行为等元数据,而标签处理类则实现了这些行为,处理由JSP页面传递过来的参数和指令。 在描述中提到的"动态属性支持"是指,标签的属性不是静态固定的,而是可以在运行时根据需要动态...
自定义属性是.NET Framework的一部分,它们是元数据的容器,可以附加到类、方法、属性等编程元素上,提供额外的信息或行为。在MVC中,我们通常使用它们来装饰控制器或动作方法,以实现如授权、缓存、模型验证等功能...
自定义属性是扩展元数据的一种方式,它们可以附加到类、方法、属性等各种程序元素上,用于存储额外的信息。在这个“反射自定义属性拼接SQL”的例子中,我们将探讨如何利用反射来读取对象的自定义属性,并根据这些...
CATIA的宏录制功能可以将操作过程转换成VBA或VBScript脚本,通过分析和修改这些脚本,可以快速掌握API的使用方法,进而使用C#等语言实现更加复杂的自定义功能。 总之,CATIA二次开发是一个系统工程,涉及到的对象和...
自定义集合类的一个例子是,你可能想要创建一个支持优先级排序的队列,这时可以实现一个`PriorityQueue`类,基于最小堆数据结构实现,允许用户通过优先级插入和删除元素。 在实际应用中,自定义集合类可以提高代码...