ror学习小结1_Ruby_编程开发_程序员俱乐部

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

ror学习小结1

 2011/10/21 7:56:54  jackyrong  http://jackyrong.iteye.com  我要评论(0)
  • 摘要:前两天跟着书,开始自学RUBY和ROR,开始笔记之,开始感受小日本的ROR如何牛B法安装ruby后看版本:ruby-v安装rails:geminstallrails3.0.3geminstallrails--include-dependencies(记得crossgfw)验证安装rails-v2手动编译rubyd:\xxxx\xxx.rb语法检查ruby-cxxx.rb打开警告-w执行字面脚本ruby-e'puts"hello"',单引号中的是语句
  • 标签:学习
前两天跟着书,开始自学RUBY和ROR,开始笔记之,开始感受小日本的ROR如何牛B法

安装ruby后看版本:ruby -v
  安装rails:gem install rails 3.0.3
           gem install rails --include-dependencies(记得cross gfw)
     验证安装rails -v

2 手动编译
   ruby d:\xxxx\xxx.rb
   语法检查  ruby -c xxx.rb
   打开警告 -w
   执行字面脚本 ruby -e 'puts "hello"',单引号中的是语句,多个语句用分号
3 获得输入number1=gets将用户输入保存到number1变量中去
4 常量:全部大写;
  局部变量:以小写字母或者下划线开头
  全局变量:以$开头

5  RUBY中三大基本数据型:数值型,范围型,符号型
   1)数值型
      大于2的30次方为bignum;小于的为fixnum
    2)范围型
         a..b:定义的是从值a到b的范围,包括a,b,以及值a,值B中间的值
         a...b:定义的是从值a到b的范围,包括a,b,以及值a,值B中间的值,不包括值b
    有相关的方法:a=0..59
                找最小: a.min
                找最大:a,max,找最后一个值a.end,第一个a.first,判断是否有这个值
                a.include?100(看范围a中是否有值100)
    3)regect:将范围转为数组,并删除条满足条件元素
          select:将该范围转为数组,只选择满足条件的
         each:输出每个范围的每个元素
      比如:count.reject(|i|i<15);
            count=1..20;
            count.each do|i|
                  puts i.to_s
             end
     4)符号对象 ,比如
      abc="dddd";
      ly=:abc
      puts ly==:"abc" 测试ly是否等于字符串abc所对应的符号对象
      输出为true
   
       字符串和符号对象的转换:
         dcy="abc"
         ly=:"abc"
          puts dcy.to_sym==ly
          puts  ly.to_s==dcy  都输出 true
     也可以通过%s{dcy}来创建符号对象
   
6) 算术运算符
    **乘方运算,比如2**3=8
7) <=>:比较两个对象,如果左边对象小于右边,返回-1;如果左边对象等于右边,返回0,如果左边对象大于右边,

范围1
8)表达式并行赋值
    比如C,D="HI","HELLO"
  交换的话
    c,d=d,c
  则C变为D,D变为C,如果任何一方的变量多于另外一方,则多余一方的设置为nul
    嵌套赋值
     test=["a","b","c","d"]
      b,(c,d),e=test
       则b="a" (c,d)="b" e="d"  而d=null
     SHE=["a","b","c]
     flh=['123","456","658","erer"]
     S,H,*E=flh
     则s=123,h=456,E=(658,erer)
    又如a,(b,*c),d="S",["H","E"]
         括号对括号的原则,则a=S,(b,*c)=[H,E],d=null,b=H,c=E
9) 注意,是if  then
          elsif ....

          else
              end

10) unless语句
     unless 条件  then
         代码块1
     else
        代码块2
      end
   当true时,执行else语句块代码,为false时,才执行then的代码

11)case xxxx
     when  xxxx
     when   xxxx
     else

end
12) for..in语句
    shujuaray=["xxx","xxx"...]
    for shuju in shujinarray
     put shuju  
end
  angle=("xxx"=>abc,"ddd"=>dfdff)
   for key,value in angle do
      put key+"指的是"+value
    end

13) 迭代器
     names=["xxx","xxxx","dfdf","xxcx]
     names.each do |name|
           puts name
      end

14) NEXT,跳出本次循环
15)单引号,双引号都可以用来表示字符串,其区别为:如果是单引号的话,原样输出字符串中的东西,双引号的话

,如果字符串中有特殊字符,则进行真实的转义,比如
   a="电风扇发射点\n大师傅似的\s....."
   b='adadasdsd:\n....\s'
16) 字符串操作:
    a<<b,将b串永久加到a串后
    puts "#{a}#{b}"
    重复次数:puts "#{a}#{b}"*3//重复连接3次
   复制字符串:dup只复制字符串内容,clone复制字符串并继承其特殊方法
   
     获取子字符串str="abcsdds",str[4,5]为获得字符串,字符串位置从0开始
17) 哈希:
    person=Hash.new
    person["name"]=xxxxx
18) 数组
      FOOD=["XXX',"DDD","XXX"....]
      food=Array.new
       food[0]=xxxx food[1]=xxxxx
   对包含特殊字符或者空格的字符串转为数组,比如
    str=%W{ABC\S DSDSD\S SDSD\S\SDD}
    str=%w{ABC\S DSDSD\S SDSD\S\SDD}
     则%W 会 ABC  DSDSD  SDSD SDD
       %w 会  ABC\S DSDSD\S SDSD\S\SDD
  unshift():向数组头部添加数组元素
  push():向尾部添加元素
   <<向数组尾部添加一个数组元素
19 类型转换
   to_s:转字符串  to_i:转为整数   to_f:转为浮点

20 类的创建
    类名第一个要大写字母,否则出错;要创建对象
    a=类名.new
     self:默认类本身
   可以定义同名的类2次,然后方法会合拼,但不建议使用。
   嵌套类 比如A::B,为B类在A类中了。
21 特殊类
    为某个特定的对象追加方法和属性,这些方法和属性封装到一个类中直接追加到对象中,类没特定的类名。比如
   class Animal
   end
   a=Animal.new
class <<a


   .....
end
21 def 方法:
    def xxxx()
      return 
      end

22 特殊方法
    class Dog
    end    dog=Dog.new
     def dog.show .....end
      直接为类的实例添加了方法
23 类方法
    class Dog
       def Dog.show
       .....
     end
    end
    Dog.show
24 类的实例变量用于类内部共享数据。用@符号开头,而类变量可以在各个类之间共享数据
  而类变量,用@@定义,可以在多个类中共享变量

25 属性读取器
   class Person
       def name
         @name
        end
end

26 属性定义标识符
    attr  XXXX,TRUE 设置某个XXX属性为可写,false为只读
   attr_reader  属性1,属性2....设置多个属性为只读
   attr_writer   属性1,属性2....设置多个属性为可写
    attr_accessor   属性1,属性2....   设置多个属性为可读写

27 代码块
    比如do
         //代码块内容
        end
     def say
         .....
          yield  //则这里会调用代码块中的内容
      end
      say do
          puts
      end

28 类的继承:class 子类<<父类,类的构造方法命名为initialize
20 class A
     end
  a=A.new
   如何通过a象JAVA反射那样得到A,可以这样:#{a.class}
     
发表评论
用户名: 匿名