1)有关类、对象、方法、变量等的相关知识
class Fixnum #Ruby下的数值的类型是Fixnum或者Bignum @@words = ["zero","one","two","three"]; #类方法 alias original_addition + #使用alias重命名关键词 def say #向Fixnum中添加新的对象方法 p @@words[self.to_i]; #self表示对象自身 end def +(value) #重定义+方法 original_addition(value).succ #succ表示下一个数字 end class << self #Ruby下定义类方法的常用方法,在此中的test和test1皆是类方法 def test end def test1 end end end
Ruby中的
方法:类方法、对象方法、单态方法等
类中涉及的变量:全局变量($开头)、类变量(@@开头)、实例变量(@开头)、常量(全部字母大写)
对象:对象是new出的(new方法在Object中定义,其他类皆继承于此),另外就如1、232、"asdf"等这样的基础对象
2)代码块相关知识
对带有代码块方法的调用可以使用do...end或者{...}。尽量在进行迭代的时候用do... end,对代码块进行资源管理时用{...},两者作用相同,但{}优先级高于do...end
a)do...end
1 array = [1,2,3,"a",:a,:b]; 2 array.each do |i| #使用do..end来指定代码块,进行数组内的循环 3 puts i if i.is_a?(Numeric) 4 end
array.each_with_index do |item,i| #数组的each_with_index方法包括元素和下标的值
p [item,i];
end
b){...}
1 a=[1,34,21,2,30,563] 2 p a.sort{|x,y| case 3 when x.to_s.length>y.to_s.length then 1 4 when x.to_s.length<y.to_s.length then -1 5 else 0 6 end}
c)使用yield来替代代码块,即需要调用代码块的时候就用yield
(a)带参数的yield
1 def one_block 2 for num in 1..3 3 yield(num) #调用的就是do...end间的代码,num作为代码段中的|i|参数传入 4 end 5 end 6 one_block do |i| 7 puts "This is block #{i}. " # #{exp}将值插入字符串中,支持所有的转义字符,此处将数值转变成了字符串。 8 end
(b)有多段代码块时yield如何匹配
1 def do_something 2 yield 3 end 4 5 do_something do 6 (1..9).each {|i| print i if i<5} 7 puts 8 end 9 do_something do 10 3.times { print "Hi!" } 11 puts 12 end 输出1234Hi!Hi!Hi!
3)Ruby中%的用法
%Q(.....) 表示的是双引号字符串
%q(.....) 表示的是单引号字符串
%w(.....) 表示其中元素被双引号括起的数组. eg. => %W(#{foo} Bar Bar\ with\ space) #=> ["Foo", "Bar", "Bar with space"]
等,参见:
http://www.jb51.net/article/49868.htm
时间: 2024-10-06 12:25:26