Ruby 学习笔记_Ruby_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > Ruby > Ruby 学习笔记

Ruby 学习笔记

 2012/4/5 13:25:37  Crabby  程序员俱乐部  我要评论(0)
  • 摘要:学习笔记has_many:line_items,一个购物车中回存在多个items,他们都链接到购物车,因为每一行订单都包含了一个到它的购物车的链接(指向cart_id);:dependent=>:destroy表明,当删除父对象时,所有与被删除的父记录存在外键关联的记录,回逐渐删除~匹配时间/\d\d:\d\d:\d\d/匹配时间/Perl
  • 标签:笔记 学习 Ruby 学习笔记
学习笔记
has_many :line_items ,一个购物车中回存在多个items,他们都链接到购物车,因为每一行订单都包含了一个到它的购物车的链接(指向cart_id); :dependent => :destroy表明,当删除父对象时,所有与被删除的父记录存在外键关联的记录,回逐渐删除~

匹配时间
/\d\d:\d\d:\d\d/匹配时间
/Perl.*Python/ Perl然后是零个或是多个字符
/Perl *Python/
/Perl +Pyhon/一个或者是多个空格
/Perl\s+Python/ Perl 空格字符

怎么样利用好模式
=~ 利用好模式 ,返回模式开始的位置,否则返回nil ,

if line =~ /Perl|Python/
  puts "Scri ~~~~ :#{line}"
end


2.6块 和 迭代器
单行的Block使用花括号,多行的block使用do end

如果方法有参数,他们出现在block之前

verbose_greet("Dave","loyal customer") {puts "hi"}

yield 语句,可以一次或者多次调用相关联的block

1.9.3-p125 :031 >   def call_block
1.9.3-p125 :032?>   puts "start of method"
1.9.3-p125 :033?>   yield
1.9.3-p125 :034?>   yield
1.9.3-p125 :035?>   puts "End of method"
1.9.3-p125 :036?>   end
=> nil
1.9.3-p125 :037 > call_block { puts "In the block" }

block应用于数组.

==================================
2.7读/写文件

使用gets获取键盘的输入,print输出
line = gets
print line

=================

3.类 对象 变量
歌曲 <名,演唱者,时长>

1.9.3-p125 :054 > class Song
1.9.3-p125 :055?>   def initialize(name, artist, duration)
1.9.3-p125 :056?>     @name =name
1.9.3-p125 :057?>     @artist = artist
1.9.3-p125 :058?>     @duration = duration
1.9.3-p125 :059?>     end
1.9.3-p125 :060?>   end
=> nil



实例变量 @开头, 使用下面的.to_s 只是报告了对象ID ,Ruby中的类永远不封闭:你总是可以向一个已有的类中添加方法.
对自己编写的类和标准的内建类 都适用
1.9.3-p125 :061 > song = Song.new("Bicyclops", "Fleck",260)
=> #<Song:0x000000018e3f18 @name="Bicyclops", @artist="Fleck", @duration=260>
1.9.3-p125 :062 > song.inspect
=> "#<Song:0x000000018e3f18 @name=\"Bicyclops\", @artist=\"Fleck\", @duration=260>"
1.9.3-p125 :063 > song.to_s
=> "#<Song:0x000000018e3f18>"

将.to_s的方法重写
1.9.3-p125 :064 > class Song
1.9.3-p125 :065?>   def to_s
1.9.3-p125 :066?>     "Song :#@name --#@artist -- #@duration"
1.9.3-p125 :067?>     end
1.9.3-p125 :068?>   end
===================================================================================================

3.1继承 和 消息

继承允许 一个类 是另一个类的特化,specialization

举例说明的是卡拉OK,卡拉OK 歌曲与其他的歌曲并没有两样(没有主唱的音轨),外加歌词和时间信息,

新类 KaraokeSong,在Song基础上加歌词

定义如下:
1.9.3-p125 :081 > class KaraokeSong <Song
1.9.3-p125 :082?>   def initialize(name, artist, duration, lyrics)
1.9.3-p125 :083?>     super(name, artist, duration)
1.9.3-p125 :084?>     @lyrics = lyrics
1.9.3-p125 :085?>     end
1.9.3-p125 :086?>   end
=> nil


< Song 子类的描述符(subclass),Song是KaraokeSong的超类(superclass),父子关系.
当Ruby遇到方法调用时,先查看song所属的类(KaraokeSong)是否有实现消息名称相同的方法,如果有则执行,否则将执行父类的方法

向song ,即KaraokeSong类的一个对象发送消息to_s~~

我们通过让每个类处理其自身实现细节的方法来解决此问题.当调用KaraokeSong.to_s时,调用其父类的to_s获得歌曲的细节,之后将歌词的信息添加上去,返回结果,细节如下~


=========
3.2 对象和属性
objects and Attributes
一个对象的外部可见部分被称之为属性attribute

添加如下的方法,可访问到具体的属性
def name
@name
end

def artist
@artist
end

def duration
@duration
end

另外方法是attr_reader
class Song
attr_reader :name, :artist, :duration
end

attr_reader是ruby的一个方法, :name(Symbol)是参数,



3.2.1可写的属性

访问对象的属性 ,访问其他的变量
= 完成赋值


==================================================


















发表评论
用户名: 匿名