- 浏览: 1329218 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (732)
- Java_about (146)
- Spring_Hibernate_Struts_OpenSource (27)
- linux_unix (62)
- life_sth (22)
- js_css_html_xml_nodejs (69)
- design_pattens (1)
- Perl (8)
- php_ecshop (4)
- DB_Mysql_Oracle_Informix_SqlServer (43)
- JSTL (8)
- Testing_自动化测试 (42)
- DB_ID_UUID (4)
- SEM_SEO (1)
- english_study_improvement (4)
- SVN_Git (9)
- WebService_SOA_CloudComputing (3)
- E-Commerce (1)
- Lucene_Solr (7)
- others (2)
- Regex (2)
- tomcat_jetty (8)
- zeroc-ice (1)
- java_excel (5)
- ant_maven_gradle (5)
- Unity_VR_AR_C# (2)
- jmeter (1)
- XPath_dom4j (1)
- Ruby_and_Rails (68)
- write_a_rails (17)
- manage_and_team (1)
- getting_real (1)
- ubuntu (20)
- git_and_git_flow (7)
- TODO (1)
- PM_design (2)
- Python_and_Django (8)
- NoSql_mongo_redis (24)
- C/C++ (3)
- vi_vim_gvim (0)
- c#_.Net_windows编程_dll (10)
- Php_and_Yii (9)
- Android_IOS (31)
- Mysql (5)
- sa_运维_network_硬件 (37)
- lua (2)
- c_cpp_VisualStudio (21)
- 硬件-RM-Arduino (6)
最新评论
-
shenkun58:
...
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
liaojia1:
正解,感谢
NoClassDefFoundError: Could not initialize springframework.BeanCreationException -
flingfox63:
谢谢分享,电脑上有IPV6,导致了Guard启动不了……
ruby错误解决: Address family not supported by protocol - connect(2) -
c39274936:
s = "hello_world_ruby" ...
驼峰格式和下划线格式转换_translation between camel and snake format -
yfj300:
学习了学习了学习了学习了
硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
今天看rails的源码里有alias_method的方法,但我好像只知道alias。
ctrl+b进入alias_method的源码,居然是stub方法。
def alias_method(new_name, old_name) #This is a stub, used for indexing end
看一下文档,总结:
相同点:
都是给方法起别名
区别 :
alias是ruby的关键字(看看下面代码的颜色哈~)
alias_method是stub方法,可以被覆盖
alias_method :breakpoint_server=, :breakpoint_server alias breakpoint_server breakpoint_server
这里也有个总结,还不错:
- 1. alias是Ruby的一个关键字,而alias_method是Module类的一个方法
- 2. alias的参数就是方法本身(method identify),注意,不是字符串,也不是Symbol,alias_method的参数则是字符串或者symbol,并且使用逗号分隔。
- 3. alias_method可以重定义,而alias则不能 不过貌似在1.9中,alias支持symbol参数了。
alias 和 self 深入理解
#1 给实例方法起别名
class AliasMethodPractice def ist_m_a puts "in #{__method__}" end def self.cls_m_x puts "in #{__method__}" end alias ist_m_b ist_m_a #<=============here end obj = AliasMethodPractice.new obj.ist_m_a obj.ist_m_b
输出也有点意思:你看出来了么?
in ist_m_a
in ist_m_a
#2 给类方法起别名
class AliasMethodPractice def ist_m_a puts "in #{__method__}" end def self.cls_m_x puts "in #{__method__}" end alias ist_m_b ist_m_a puts "self=#{self}" puts "self.class=#{self.class}" alias cls_m_y cls_m_x # undefined method `cls_m_x' for class `AliasMethodPractice' (NameError) alias AliasMethodPractice.cls_m_y AliasMethodPractice.cls_m_x # syntax error, unexpected '.' (SyntaxError) alias cls_m_y AliasMethodPractice.cls_m_x # syntax error, unexpected '.', expecting kEND (SyntaxError) #<=============here 是错误的 end obj = AliasMethodPractice.new obj.ist_m_a obj.ist_m_b AliasMethodPractice.cls_m_x
这种写法是会报错的!原因,成了方法调用。
看看下面的self输出的区别吧:
class AliasMethodPractice def ist_m_a puts "in #{__method__}" end def self.cls_m_x puts "in #{__method__}" end alias ist_m_b ist_m_a puts "self=#{self}" puts "self.class=#{self.class}" class << self puts "self=#{self}" puts "self.class=#{self.class}" end #<=============here end obj = AliasMethodPractice.new obj.ist_m_a obj.ist_m_b AliasMethodPractice.cls_m_x #AliasMethodPractice.cls_m_y
输出:
self=AliasMethodPractice
self.class=Class
self=#<Class:AliasMethodPractice>
self.class=Class
in ist_m_a
in ist_m_a
in cls_m_x
看见了区别,就比较好说了。
下面的写法才可以实现给类方法取别名:
class AliasMethodPractice def ist_m_a puts "in #{__method__}" end def self.cls_m_x puts "in #{__method__}" end alias ist_m_b ist_m_a puts "self=#{self}" puts "self.class=#{self.class}" class << self puts "self=#{self}" puts "self.class=#{self.class}" alias cls_m_y cls_m_x #It is that! #<=============here end end obj = AliasMethodPractice.new obj.ist_m_a obj.ist_m_b AliasMethodPractice.cls_m_x AliasMethodPractice.cls_m_y
输出:
self=AliasMethodPractice
self.class=Class
self=#<Class:AliasMethodPractice>
self.class=Class
in ist_m_a
in ist_m_a
in cls_m_x
in cls_m_x
本文结束。
本文结束。
本文结束。
本文结束。
本文结束。
本文结束。
评论
2 楼
fantaxy025025
2011-10-14
呵呵。楼上说的是对的!
如果都打开class的话,是没有问题的。
就怕用self.method_a这种,alias又没有在class类里面写。
如果都打开class的话,是没有问题的。
就怕用self.method_a这种,alias又没有在class类里面写。
1 楼
orcl_zhang
2011-10-14
引用
undefined method `cls_m_x' for class `AliasMethodPractice'
class A class << self def mm puts 'mm' end alias :mmm :mm end end # nil A.mmm #mm # nil class A def self.s_m 'mm' end alias :s_mm :s_m end NameError: undefined method `s_m' for class `A' from (irb):46
alias重命名“当前”的方法。
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 702= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1195Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2894碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1315这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2664DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 1038From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 703The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 984在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1613prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 2007Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1115Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1181from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1221一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 1135The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 640在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1461问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 2004错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2227rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 947这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1108#link_to not working in sc ...
相关推荐
- **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:读者已经具备一定的Ruby编程基础,并对Web开发有一定的了解。 #### 二、什么是Rails...
**Redmine** 是一个基于 Web 的项目管理和跟踪工具,它使用 Ruby on Rails(简称 ROR)框架构建而成。Redmine 的设计初衷是为了提供一个灵活且易于定制的解决方案来满足不同组织对项目管理的需求。它支持多种数据库...
`weixin_rails_middleware` 是一个开源的 Ruby 框架中间件,设计用于帮助开发者轻松地在 Rails 应用程序中集成微信服务。...通过深入理解其工作原理和使用方法,开发者可以高效地构建出具有微信功能的 Rails 应用。
分2卷压缩,另一卷在我的资源列表 本书从Ruby和Rails的历史讲起,以在Rails...本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。
Ruby on Rails是一个使用Ruby语言编写的开源Web应用框架,它使用了“约定优于配置”(convention over configuration)的开发哲学,旨在减少代码量和提高开发效率。Rails框架的核心是遵循MVC(模型-视图-控制器)...
在学习Ruby on Rails之前,首先需要理解Ruby的基本概念,如变量、数据类型、控制结构(如if语句、循环)、类与对象、方法定义、模块和块等。 2. **Rails框架** Rails框架提供了一套完整的工具集,用于快速构建Web...
例如,在此手册中提到了 Ruby 2.3.0 和 Rails 的搭配使用。 #### 三、软件包上传 - 使用 `mkdir /opt/ruby_on_rails` 命令创建安装目录。 - 通过上传工具将软件包上传至 `/opt/ruby_on_rails` 目录下。 - 可以使用 ...
通过阅读《Ruby on Rails笔记》,我们可以了解到作者对于Ruby on Rails学习过程中的深入理解和实践经验。这份笔记不仅是一份学习指南,也是对Rails初学者来说非常有价值的参考资料。无论是想要从零开始学习Rails,...
ruby_on_rails_创建一个博客项目.doc
### Web开发:深入理解Ruby on Rails #### 一、引言与概述 Ruby on Rails (简称Rails) 是一种用于Web开发的开源框架,基于Ruby语言。Rails的设计理念强调程序员的生产力和代码的简洁性,因此它成为了Ruby语言的...
### Ruby on Rails与RadRails环境配置详解 ...至此,您已经完成了Ruby on Rails和RadRails环境的基本配置,可以开始进行Rails项目的开发工作了。通过以上步骤,您可以更高效地进行Web应用的开发和测试。
通过上述四个部分的学习,读者不仅能掌握Ruby语言的基础知识,还能深入了解Rails框架的核心概念和技术细节。更重要的是,本书提供了丰富的实战案例,帮助开发者将理论知识应用到实际项目中,从而更好地应对复杂多变...
【分2卷压缩,另一卷在我的资源列表】 本书从Ruby和Rails的历史讲起,以在...本书注重实用性,适合初学者迅速掌握Ruby开发工具的使用方法,为希望深入了解Rails框架并建立健壮网络应用的开发人员提供强大的技术支持。
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和代码的可读性。Rails的核心理念是“约定优于配置”(Convention Over ...
Ruby on Rails(简称RoR)是一种基于Ruby编程...学习者将深入理解MVC架构,掌握路由配置、数据库设计、视图渲染、测试驱动开发以及如何利用社区资源优化项目。通过实践,你可以快速上手并体验到RoR带来的高效开发体验。
Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zip Ruby_on_Rails_rails.zipRuby_on_...
RUBY的经典之作,对其在RAILS下开发写得很详细