码迷,mamicode.com
首页 > 其他好文 > 详细

Ruby学习笔记0505

时间:2016-05-05 17:42:42      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:

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

输出
1234
Hi!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

 

Ruby学习笔记0505

标签:

原文地址:http://www.cnblogs.com/changleaiya/p/5462101.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!