- 浏览: 1345527 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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)
请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/blog/1108639
另外,如果有时间看看rails高级编程,会有更深入的理解,这本书讲的还是满深入的。
熟悉一个例子
class A class B puts "self in class A::B is |#{self}|" def self.klass_method_b puts "self in #{__method__} is |#{self}|" end def ist_method_a puts "self in #{__method__} is |#{self}|" end end end ab = A::B.new #ab.klass_method_b #undefined method `klass_method_b' for #<A::B:0xb754bf20> (NoMethodError) A::B.klass_method_b ab.ist_method_a
输出:
self in class A::B is |A::B|
self in klass_method_b is |A::B|
self in ist_method_a is |#<A::B:0xb76d9f18>|
熟悉一下module中的self
module A module B puts "self in module A::B is |#{self}|" def method_a puts "self in method_a of module A::B is |#{self}|" end end end class AB include A::B end (ab = AB.new).method_a
输出:
self in module A::B is |A::B|
self in method_a of module A::B is |#<AB:0xb76a7568>|
解释:
module全局作用域内的self还是没有变,就是Module;对于此处就是A::B
module的方法是要给混入的类用的,所以方法作用域的self还是当前的实例
看一下ruby中,两个冒号开头的语法意义
class C def m_c puts __method__ end end module A module B class C def m_a_b_c puts __method__ end end class D < C end class E < ::C end puts C puts ::C puts self puts self::C end end
输出:
A::B::C
C
A::B
A::B::C
m_c
解释:
这种双冒号开头语法本质上是去除了默认的作用域slef的限制,使得双冒号开头解释为self==Object,也就是说,::C==Object::C
但没有::开头的类C表示self::C(为什么呢,看其所在的作用域)
这样就可以解决到底extends哪个模块的问题了(例子中继承了哪个C)
为啥不写为Object::C呢:
原因1:简单,至少少敲了5次键,这也很符合perl的逻辑,嘿嘿;
原因2:以后扩展方便么,万一Object也有顶层类等变化呢,待讨论咯,反正我这么觉得,你看ruby1.9已经这么干了
OK
OK
OK
## ruby语言是我用过的最舒服的语言!
OK
OK
OK
评论
3 楼
fantaxy025025
2012-05-20
tedeyang 写道
请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/admin/blogs/1108639
这个url错了,除了admin,其他人无法访问。
另外,最后一段代码为什么会多输出一行 “m_c”?
这个url错了,除了admin,其他人无法访问。
另外,最后一段代码为什么会多输出一行 “m_c”?
url改了,thanks!
最后一行的,我也忘记了,多半是调试别的程序,粘贴多了~
2 楼
tedeyang
2012-05-20
请先看前一篇关于self的讲解:http://fantaxy025025.iteye.com/admin/blogs/1108639
这个url错了,除了admin,其他人无法访问。
另外,最后一段代码为什么会多输出一行 “m_c”?
这个url错了,除了admin,其他人无法访问。
另外,最后一段代码为什么会多输出一行 “m_c”?
1 楼
tedeyang
2012-05-20
很好的解释。我是为双冒号来的。不得不说ruby隐晦的地方很多啊。
发表评论
-
ruby计算平方和开方_n次方n次幂
2022-06-28 21:52 736= = = ruby计算平方和开方 3 ** 2#= ... -
Ruby发送HTTP请求
2015-07-21 18:06 1219Ruby使用HTTP协议发送请求的方法备忘。 好像这 ... -
invalid byte sequence in GBK”问题 invalid byte sequence in UTF-8”问题
2015-07-03 15:11 2931碰见错误: test.rb:8:in `ma ... -
Ruby1.9之字符串内编码和外编码
2015-07-02 17:52 1342这里的文章很不错的么:Rubyist http://ru ... -
DevKit介绍和安装in railsInstaller
2015-05-26 17:01 2688DevKit介绍和安装in railsInstaller ... -
Rails_migrations中使用mysql的bigint
2014-09-30 14:32 1060From:http://rubyer.me/blog/468 ... -
Rails外如何启动rails的类自动加载_activates autoloading using ActiveSupport 3.x
2016-06-22 12:08 734The following cod ... -
如何在rails里打开gem里面的类_为何有时候不生效
2014-09-02 21:55 1006在rails里面打开某个gem的类,补充一下等等,也 ... -
ruby的加载机制和rails_自动加载机制_对比
2014-09-02 16:51 1639prefer:http://urbanautomat ... -
Rails源码阅读(13)rails中的autoload和ruby的autoload
2014-07-30 17:13 2038Rails源码阅读(13)rails中的autoload和 ... -
Rails中命名路由的区别***_url与***_path
2014-07-29 16:37 1140Rails中命名路由的区别***_url与***_path ... -
ruby_gem安装_切换指定不同的源
2014-07-20 18:09 1202from:http://www.hiceon.com/to ... -
Ruby 的文件操作_不断总结
2014-07-11 11:55 1249一、用文件和目 ... -
Rails源码阅读(12)叫Rails的模块module_Rails常量使用
2014-07-02 09:35 1166The module nams "Rail ... -
注册邮件中的链接无host
2014-05-19 14:47 645在注册邮件中用命名路由的xxx_url不起作用,导致注 ... -
每个命令都有bundle exec的麻烦
2014-04-18 17:33 1491问题: 每次都得搞这个东西bundle exec放在 ... -
关于favicon.ico的报错:RoutingError
2014-03-31 14:45 2038错误: ActionController::Routin ... -
rbenv_安装太慢_解决办法
2014-03-31 13:51 2255rvm做了很多“不为人知”的事情,而且做的太 ... -
配置sunspot tomcat结合sunspot_rails
2014-02-26 10:58 984这个sunspot的东西还是有不少缺点的。 ht ... -
RubyOrRails_使用技巧_收集
2013-11-09 14:39 1131#link_to not working in sc ...
相关推荐
### Ruby 模块详解 #### 一、Ruby 模块简介 在 Ruby 语言中,模块(Module)是一个非常重要的概念。它不仅提供了一种组织代码的有效方式,还支持一种称为 Mixin 的特殊继承机制。模块可以被视为一个容器,用于存放...
### Ruby 方法详解 #### Ruby 语言简介 Ruby 是一种动态、面向对象的脚本语言,以其简洁、清晰的语法著称。它支持多种编程范式,包括面向对象、命令式和函数式编程,并且拥有强大的元编程能力。Ruby 的设计哲学强调...
总结,通过学习和实践这个Ruby博客制作项目,初学者不仅能掌握Ruby语言的基本语法,还能了解到Web开发的核心概念,包括路由、数据库操作、模板引擎以及测试。这是一个极好的起点,为后续的Ruby on Rails学习打下坚实...
### 详解Ruby中的单件方法和单件类 在Ruby编程语言中,单件方法(Singleton Method)和单件类(Singleton Class)是两个非常重要的概念。这些特性为Ruby提供了强大的灵活性,允许开发者针对特定的对象定义唯一的...
Ruby是一种面向对象的、动态类型的编程语言,以其简洁、优雅的语法和强大的元编程能力而闻名。Ruby的API(应用程序接口)文档是开发者理解和使用Ruby语言的重要资源,它详细介绍了Ruby的标准库、类、模块、方法等...
### Ruby语言基础知识与示例详解 #### 一、Ruby简介 Ruby是一种面向对象的脚本语言,具有简单、高效的特点。它由日本人松本行弘(Yukihiro Matsumoto)于1995年设计并发布。Ruby的设计哲学强调程序员的生产力和...
### Ruby语言教程和经典案例详解 #### Ruby语言基础语法教程 **1. 变量和数据类型** 在Ruby中,变量声明相对灵活,通常无需显式地使用`var`关键字,可以直接通过赋值来声明变量。例如: ```ruby name = "Alice" ...
### Ruby常见面试题详解 #### 1. 什么是Ruby?简要介绍Ruby的特点和主要用途。 **Ruby**是一种面向对象的、动态类型的解释性脚本语言。它由日本程序员松本行弘(Matz)于1995年设计并发布。Ruby的设计理念在于简洁...
Ruby 受到了多种语言的影响,包括 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 等。 Ruby 的主要特点包括: 1. **动态类型**:变量类型在运行时确定,使得代码更加灵活。 2. **面向对象**:几乎所有元素都是对象,这...
### Ruby基本语法知识点详解 #### 一、简介 Ruby 是一种简单快捷的脚本语言,易于理解且功能强大。本文档旨在对Ruby中的一些基本语法知识点进行归纳总结,特别是注释与标识符等方面的基础内容。 #### 二、Ruby...
### Ruby中的模块与混合类型详解 #### 模块概述 在Ruby编程语言中,模块(Modules)是一个重要的概念,主要用于组织代码以及实现某些特定的功能,比如混合(Mix-in)。模块可以被视为一组方法、类和常量的集合。...
Ruby教程详解 Ruby是一种强大的、面向对象的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1993年设计并开发。它以其简洁、优雅的语法和对程序员的友好性而闻名,深受开发者喜爱。Ruby的核心设计理念是让编程变...
### Ruby语言快速参考指南 #### 一、简介 Ruby是一种动态的、开源的编程语言,以其简洁性和高效性而著称。它具有优雅的语法结构,使得代码既易于阅读也易于编写。本指南旨在为初学者和有经验的开发者提供一个快速...
1. **简洁的语法**:AASM提供了一种直观的Ruby风格的语法来定义状态和事件,使得代码可读性更高。 2. **事务支持**:状态转换可以在数据库事务中执行,确保数据一致性。 3. **回调**:可以在状态转换前后定义回调...
### Masonry 的使用详解 #### 一、简介 Masonry 是一个用于 iOS 和 macOS 开发的轻量级布局框架,其主要特点在于提供了一种更加优雅的链式语法来实现自动布局(Auto Layout),相较于传统的 Interface Builder 或者...