- 浏览: 303642 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
作者:孙志萌 浏览次数(20) 时间:2013-03-02 20:59:19 今天被问到此类问题,以前总是觉得这个是比较宽泛的一个概念,自己即使是用过这些特性,但却一直不知道这叫“元编程” 直到今天被人问起的时候,方才顿悟一些,随后便在网上和自己的平实用的一些元编程做个小总结。 原来所谓的Ruby中的元编程,是可以在运行时动态的操作语言结构(如类、模块、实例变量等)的技术。你甚至于可以在不用重启的情况下,在运行时直接键入一段新的Ruby代码,并执行他。 Ruby的元编程,也具有“利用代码来编写代码”的作用。例如,常见的attr_accessor等方法就是如此。 首先我能想到的自己用过的有这么几个: 1,respond_to? 2,define_method 3,instance_variable_get, instance_variable_set 4,eval 不过这个方法能尽量避免就避免,执行效率特别低!! 具体的意思想必一看方法名字 就知道这些方法的所要实现的逻辑。 具体可详见http://api.rubyonrails.org/ 上具体分析源码,很简单。 以下是我从其他地方搜索而来,以便以后的工作中有助于提高自己的编程技能; 1,内省,反射 在Ruby中,你完全有能力在运行时查看类或对象的信息。我们可以使用class、 instance_methods、 intance_variables等方法来达到目的。我们讲这种技术成为内省(Introspection)或者反射(Reflection)。 一说编写元程序的语言称之为元语言。被操纵的程序的语言称之为目标语言。一门编程语言同时也是自身的元语言的能力称之为反射或者自反。 ——摘自维基百科元编程条目 classRubyist defwhat_does_he_do @person='A Rubyist' 'Ruby programming' end end an_object = Rubyist.new puts an_object.class# => Rubyist puts an_object.class.instance_methods(false)# => what_does_he_do an_object.what_does_he_do puts an_object.instance_variables# => @person respond_to?方法是反射机制中另一个有用的方法。使用respond_to?方法,可以提前知道对象是否能够处理你想要交与他执行的信息。所有的对象都有此方法,使用respond_to?方法,你可以确定对象是否能使用指定的方法。 2,instance_eval Object类提供了一个名为instance_eval的公开方法,该方法可被一个实例调用。他提供了操作对象的实例变量的途径。可以使用字符串向此方法传递参数或者传递一个代码块。 classRubyist def initialize @geek="Matz" end end obj = Rubyist.new # instance_eval可以操纵obj的私有方法以及实例变量 obj.instance_eval do puts self# => # puts @geek# => Matz end 通过instance_eval传递的代码块使得你可以在对象内部操作。你可以在对象内部肆意操纵,不再会有任何数据是私有的!instance_eval亦可用于添加类方法。 classRubyist end Rubyist.instance_eval do defwho "Geek" end end puts Rubyist.who# => Geek const_get, const_set 类似的,const_get和const_set用于操作常量。const_get返回指定常量的值: puts Float.const_get(:MIN)# => 2.2250738585072e-308 const_set为指定的常量设置指定的值,并返回该对象。如果常量不存在,那么他会创建该常量,就是下面示范的那样: classRubyist end puts Rubyist.const_set("PI",22.0/7.0)# => 3.14285714285714 因为const_get返回常量的值,因此,你可以使用此方法获得一个类的名字并为这个类添加一个新的实例化对象的方法。这样使得我们有能力在运行时创建类并实例化其实例。 # Let us call our new class 'Rubyist' # (we could have prompted the user for a class name) class_name ="rubyist".capitalize Object.const_set(class_name,Class.new) # Let us create a method 'who' # (we could have prompted the user for a method name) class_name =Object.const_get(class_name) puts class_name# => Rubyist class_name.class_eval do define_method :who do |my_arg| my_arg end end obj = class_name.new puts obj.who('Matz')# => Matz
发表评论
-
git仓库创建
2020-09-04 15:33 713推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 479nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 910业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 867class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 570require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 539针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1169<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 1004gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 699def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 733sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 931链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 787Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1044tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1045例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 448关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1189def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1093[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1411登录阿里云后首先 sudo apt-get update a ... -
打包订单单据发给货代
2018-09-11 15:43 1182pdf&excell&png # rend ...
相关推荐
Ruby元编程是编程领域中一个深入且强大的主题,它允许程序员在运行时修改或创建代码,极大地提高了灵活性和代码的动态性。这本书“Ruby元编程第二版”专注于讲解Ruby语言的这一独特特性,旨在帮助开发者更好地理解和...
ruby元编程.pdf ruby 元编程 这本书对ruby的调用原理做了非常精辟的分析。 ruby 元编程 这本书对ruby的元编程方式做了比较好的阐释。 ruby 元编程 这本书对结对编程有一个很好的提现。
根据提供的文件信息,本文将对《Ruby元编程》这一主题进行深入探讨,解析其核心概念、应用场景以及为何元编程在Ruby语言中具有重要的地位。 ### 一、Ruby元编程简介 #### 1.1 元编程定义 元编程是指编写能够生成或...
Ruby元编程是编程的一种高级技巧,它允许程序员在运行时动态地修改或创建代码,极大地提高了灵活性和代码的可扩展性。Ruby作为一种动态类型语言,其元编程能力尤为强大,使得开发者可以创建出高度定制化的解决方案。...
通过分析案例、讲解例题、回顾Ruby代码库的实现细节,作者不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题的方式,更详细开列出发挥其优势的技巧和常用的Ruby设计模式。Ruby之父松本行弘作 序推荐。
Ruby元编程中文版
本书的第一部分“Ruby元编程”是本书的核心部分,他讲述了一个资深程序员在办公室一周发生的事情。 本书的第二部分“Rails中的元编程”是一个元编程实例,Rail是Ruby标志性框架。 在阅读本书之前,需要了解本书的三...
### Ruby元编程核心知识点概述 #### 一、元编程概念及意义 元编程是一种编程技术,它允许程序在运行时修改或生成其他程序的行为。在《Ruby元编程》这本书中,作者通过一系列案例来深入浅出地介绍了Ruby语言中独特...
在Ruby这种动态编程语言中,元编程是一种核心技术,它不仅仅是一种技巧,更是Ruby和Rails框架中用于提高开发效率和软件复用性的关键方法。 在Ruby语言中,元编程主要通过方法拦截、动态方法定义、元类以及一些特殊...
ruby元编程 第2版 中文 目录清晰 方便广大通勤族路上看,如果喜欢请购买正版纸质图书
Ruby元编程是编程领域中的一个高级技术,它允许程序员在运行时操纵语言的结构和行为。这本《Metaprogramming Ruby》书籍深入探讨了如何利用Ruby的特性进行元编程,帮助开发者提升代码的灵活性、可扩展性和复用性。源...
《Ruby元编程》以案例形式循序渐进地介绍了Ruby特有的实用编程技巧 元编程 通过分析案例 讲解例题 回顾Ruby代码库的实现细节 《Ruby元编程》作者Paolo Perrotta不仅向读者展示了Ruby编程的优势和Ruby特有的解决问题...
- **Kosmas Chatzimichalis**(软件工程师):本书不仅深入讲解了Ruby及其框架Ruby on Rails的核心机制,还提供了一系列宝贵的工具和技巧,帮助读者将Ruby编程水平提升到一个新的高度。 - **Arialdo Martini**...
Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门与实践 Ruby编程语言入门...
本资料包主要关注的是基于Ruby编程的基础知识和应用,包括如何使用Ruby进行开发和解决问题。 Ruby的设计哲学强调程序员的生产力和代码的可读性。它的语法直观,使得初学者能够快速上手。Ruby的核心特性包括: 1. ...
以下是一些关于Ruby元编程的关键知识点: 1. 单例类(Singleton Class): 在Ruby中,每个对象都有一个与之关联的单例类,这个类只包含该对象的实例方法。通过`class ; self; end`可以访问到对象的单例类,这对于...
Ruby 元编程,不错的书,就是有点难懂
### Ruby元编程基础学习笔记整理 #### 一、语言构建(Language Constructs) 在Ruby中,诸如变量、类和方法等元素统称为语言构建(Language Constructs)。这些构建块是构成Ruby程序的基础。 ##### 示例代码分析 ```...
### Ruby编程语言简介 #### 一、Ruby编程语言概述 Ruby是一种动态的、面向对象的、通用型的编程语言,自1995年由日本程序员松本行弘(Yukihiro Matsumoto)创建以来,便以其简洁优雅的语法、高度可读性和易于学习...