- 浏览: 51366 次
- 性别:
- 来自: 青岛
文章分类
最新评论
类的基本定义
class Myclass #注意类名必须是常量~,也就是字首大写或全部大写
#可有可无的初始化定义
[ def initalize arg1....
end]
def name #成员变量name的getter
@name #getter #中最好不要有其他语句
end
def name= value #name的setter
@name = value
end
# 用元编程进行setter,getter的设置
attr :name, true #如果没有true,则只有name的getter,而没有setter。只能建立一个成员变量的getter,setter
attr_reader :name1,:name2 #可以建立多个成员变量的getter
attr_writter :name1, :name2 #可以建立多个成员变量的setter
attr_accessor :name1, :name2 #可以建立多个成员变量的getter和setter
#初始化一个类属性
@@c_name
#定义一个类方法
Myclass.c_method
XXXXXXX
end
#这样也可以定义一个类方法
class << self
def c_method
end
end
#可以给方法设定可见性
private
def method
end
..........#以下的的方法都为private直到另一个可见性修饰符出现为止
可以在定义的实例方法后用可见性修饰符和方法的符号来定义方法的可见性
end #恩,这个大而全的类定义结束了
定义单体类
单体类中只有类方法,所以上面两种方法是可行的。ruby中类也是一种对象,所以只要能创建一个类使得除类这个对象之外的其他一切实例化的对象都不能调用成员方法,单体类就建立了。
另一种方法
class Singleton
end
s = Singleton.new
def s.c_method
xxxxxx
end
由于这个方法是绑定在某个对象之上,所以这个对象成了唯一的“它”,没有任何方法可以克隆一个一样的对象
继承
class child < parent
end
重写
直接使用同名类会对类进行重写
定义模块
module nice
end
要使用模块必须使用include module_name。除非模块中的方法,类,成员明示了命名空间
module nice
def nice.method
end
这样就可以直接使用nice.method来调用这个method
包含:
require 'xxxx' #包含另一个文件,注意不带rb
搜索路径
预定变量$LOAD_PATH
环境变量RUBYPATH
最后是系统的环境变量PATH
class Myclass #注意类名必须是常量~,也就是字首大写或全部大写
#可有可无的初始化定义
[ def initalize arg1....
end]
def name #成员变量name的getter
@name #getter #中最好不要有其他语句
end
def name= value #name的setter
@name = value
end
# 用元编程进行setter,getter的设置
attr :name, true #如果没有true,则只有name的getter,而没有setter。只能建立一个成员变量的getter,setter
attr_reader :name1,:name2 #可以建立多个成员变量的getter
attr_writter :name1, :name2 #可以建立多个成员变量的setter
attr_accessor :name1, :name2 #可以建立多个成员变量的getter和setter
#初始化一个类属性
@@c_name
#定义一个类方法
Myclass.c_method
XXXXXXX
end
#这样也可以定义一个类方法
class << self
def c_method
end
end
#可以给方法设定可见性
private
def method
end
..........#以下的的方法都为private直到另一个可见性修饰符出现为止
可以在定义的实例方法后用可见性修饰符和方法的符号来定义方法的可见性
end #恩,这个大而全的类定义结束了
定义单体类
单体类中只有类方法,所以上面两种方法是可行的。ruby中类也是一种对象,所以只要能创建一个类使得除类这个对象之外的其他一切实例化的对象都不能调用成员方法,单体类就建立了。
另一种方法
class Singleton
end
s = Singleton.new
def s.c_method
xxxxxx
end
由于这个方法是绑定在某个对象之上,所以这个对象成了唯一的“它”,没有任何方法可以克隆一个一样的对象
继承
class child < parent
end
重写
直接使用同名类会对类进行重写
定义模块
module nice
end
要使用模块必须使用include module_name。除非模块中的方法,类,成员明示了命名空间
module nice
def nice.method
end
这样就可以直接使用nice.method来调用这个method
包含:
require 'xxxx' #包含另一个文件,注意不带rb
搜索路径
预定变量$LOAD_PATH
环境变量RUBYPATH
最后是系统的环境变量PATH
发表评论
-
Evaluation in Ruby
2011-12-28 15:45 1152Ruby的evaluation是一个很重要的功能,它可 ... -
Ruby的include和extend
2011-12-28 15:17 1421在ruby中基本上有三种引入module的方式 一、在 ... -
rails之 最有用的eval族方法:class_eval
2011-12-26 17:02 1298从本质上讲,class_eval(也就是module_ev ... -
alias, alias_method和alias_method_chain
2011-12-26 16:34 870本文介绍Ruby里的几个关键字。 1. alias ... -
Ruby学习笔记-Block, Proc and Lambda
2011-12-08 14:08 10491.Block: Ruby中的块就是由多行代码组成 ... -
Symbol
2011-12-08 11:25 910Symbol 在Ruby中,有一种奇怪 ... -
rvm 使用 -- ruby 1.9.2 rails 3.1.2
2011-11-21 16:35 1628RVM可以管理不同的ruby,也可以管理同一个ruby下 ... -
hash 和 array 的一个用法
2011-11-01 14:21 699a=[[1,2],[3,4]] Hash[*a ... -
按位与、按位或组合
2011-10-20 18:52 1177下午 看了下 按位与、按位或组合 权限串应用 ... -
gem 降级
2011-10-09 17:21 1950gem uninstall rubygems- ... -
render vs redirect
2011-08-15 15:53 968render和redirect的区别在于: rende ... -
ruby 正则匹配非站内链接
2011-08-01 16:48 948def has_href_not_XXX?(content ... -
form_for && form_tag
2011-07-27 13:47 957<% form_for @XX, :url => ... -
好吧,就这么写了
2011-07-16 17:02 536以后写代码 就按这个思路来 先写 伪代码 再写 ... -
.nil? , .empty?, .blank? .present? 的区别
2011-04-08 17:02 3494首先这三个都是判空的。 而 .nil? 和 .empty? 是 ... -
private和protected在ruby和Java里的区别:
2011-03-31 10:15 10791、在不同对象实例当中的作用域不同 Java当中,不管priv ... -
java转ruby
2011-03-31 10:14 733换了新工作,开始学习ruby,干了一段时间的java,有必要停 ...
相关推荐
然而,这种灵活性也意味着在某些情况下,程序可能会无意中修改核心的Ruby类或模块,这可能导致不可预测的行为,尤其是在生产环境中。为了防止这种情况,开发者可以使用特定的工具,如"Ruby-Refrigerator"。 "Ruby-...
总结来说,`Ruby-FinishingMoves`通过向核心Ruby类添加实用方法,提升了编程体验和代码质量。这些扩展包括但不限于数组、字符串、哈希、日期时间的便捷操作,以及元编程和迭代器的优化。正确使用此类扩展,可以使...
为了解决这个问题,开发者可以创建一个抽象层,将Zoho的API转换为更加友好和易于使用的Ruby类,就像`ActiveRecord`那样。 `ActiveRecord`是Ruby on Rails框架的一个核心组件,它提供了一个ORM(对象关系映射)层,...
Ruby-Pundit是一个强大的授权库,它鼓励使用面向对象的设计原则和纯Ruby类来实现细粒度的权限控制。在Ruby开发中,特别是在构建复杂的Web应用程序时,身份验证和授权是两个关键的安全方面。Pundit的目标是为开发者...
Ruby语言个人学习小案例分享-Ruby类案例,适合初学者学习参考,附带源码在里面。
pundit, 通过面向对象设计和纯 ruby 类进行最小授权 Pundit Pundit提供了一组帮助器,它指导你利用正则 ruby 类和面向对象设计模式构建一个简单。健壮和可以扩展的。链接:API文档源代码 。行为准则。赞助: 安装gem...
aasm, ruby 类( 普通 ruby,ActiveRecord,Mongoid )的AASM状态机 AASM --ruby-状态机 索引从版本升级到 4使用情况回调函数生命周期管理当前事件触发器 。过渡模式每个类的多状态机句柄名称在多个状态机之间冲突。...
在Ruby中,方法和类是构建程序的基本元素,它们是实现代码重用和组织的关键概念。 ### 方法(Methods) 方法在Ruby中是可重复使用的代码块,它们接受参数,执行特定任务,并可能返回值。方法定义使用`def`关键字...
dry-configurable, 一个简单的mixin使 ruby 类可以配置 干可以配置 概要class App extend Dry::Configurable # Pass a block for nested configuration (works to any
在这里,`values` 是Ruby类的实例方法,返回类的所有常量。通过`each` 方法,我们可以轻松地遍历枚举的所有值。 面向对象的枚举还可以包含实例方法,以便提供更复杂的业务逻辑。比如,我们可以定义一个`next_day` ...
1. **模型定义**:你可以定义一个Ruby类并继承自`MongoMapper::Document`,然后使用`key`方法声明属性,这类似于ActiveRecord中的`attr_accessor`。例如: ```ruby class User include MongoMapper::Document ...
1. **创建插件结构**:一个 Logstash 插件通常包含一个 Ruby 类,该类继承自 Logstash 的基础插件类,如 `Logstash::Inputs::Base`、`Logstash::Filters::Base` 或 `Logstash::Outputs::Base`。这些基类提供了事件...
然后在Ruby类中包含`Wisper::Publisher`模块,使该类具有广播事件的能力。例如: ```ruby class MyPublisher include Wisper::Publisher def perform_action broadcast(:action_performed) end end ``` ...
7. **混合类**(Mixins):Ruby 类可以通过 `include` 关键字混入模块,从而获取模块中的方法,实现了多重继承的效果。 8. **标准库**:Ruby 拥有一个丰富的标准库,包含了各种常用的工具和功能,如文件操作、网络...
"Learn_ruby"项目很可能是为了帮助初学者掌握这种实践方式,通过创建基本的Ruby类来学习。下面,我们将深入探讨Ruby类、TDD以及如何在实践中应用它们。 首先,Ruby中的类是面向对象编程的基础,它们定义了对象的...
4. **实现核心功能**:编写Ruby类来实现上述功能。例如,`User`类管理用户信息,`Room`类处理房间逻辑,`Card`类代表不同的斐波那契数值。 5. **交互界面**:可以使用Sinatra或Rails这样的Web框架来创建一个简单的...
Pundit Pundit提供了一组帮助程序,可以指导您利用常规Ruby类和面向对象的设计模式来构建简单,健壮和可扩展的授权系统。 链接:API文档Sou Pundit Pundit提供了一组帮助程序,可指导您利用常规Ruby类和面向对象的...
通常,这样的文件会包含一个或多个Ruby类或模块,以及分解质因数的函数定义。 总结来说,Ruby中的分解质因数是通过迭代或更高效算法实现的,它在数学、加密和其他计算场景中有广泛应用。了解如何在Ruby中实现这一...