免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2520 | 回复: 2
打印 上一主题 下一主题

ror学习小结1 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-23 17:00 |只看该作者 |倒序浏览
ror学习小结1




前两天跟着书,开始自学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:输出每个范围的每个元素
      比如:
  1. count.reject(|i|i<15);
  2.             count=1..20;
  3.             count.each do|i|
  4.                   puts i.to_s
复制代码
end
     4)符号对象 ,比如
  1. abc="dddd";
  2.       ly=:abc
  3.       puts ly==:"abc"
复制代码
测试ly是否等于字符串abc所对应的符号对象
      输出为true
   
       字符串和符号对象的转换:
  1. dcy="abc"
  2.          ly=:"abc"
  3.           puts dcy.to_sym==ly
  4.           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
    嵌套赋值
  1. test=["a","b","c","d"]
  2.       b,(c,d),e=test
  3.        则b="a" (c,d)="b" e="d"  而d=null
  4.      SHE=["a","b","c]
  5.      flh=['123","456","658","erer"]
  6.      S,H,*E=flh
  7.      则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
  1. elsif ....

  2.           else
复制代码
end

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

11)
  1. case xxxx
  2.      when  xxxx
  3.      when   xxxx
  4.      else
复制代码
end
12) for..in语句
  1. shujuaray=["xxx","xxx"...]
  2.     for shuju in shujinarray
  3.      put shuju   
  4. end
  5.   angle=("xxx"=>abc,"ddd"=>dfdff)
  6.    for key,value in angle do
  7.       put key+"指的是"+value
复制代码
end

13) 迭代器
  1. names=["xxx","xxxx","dfdf","xxcx]
  2.      names.each do |name|
  3.            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) 哈希:
  1. person=Hash.new
  2.     person["name"]=xxxxx
复制代码
1 数组
  1. FOOD=["XXX',"DDD","XXX"....]
  2.       food=Array.new
  3.        food[0]=xxxx food[1]=xxxxx
复制代码
对包含特殊字符或者空格的字符串转为数组,比如
  1. str=%W{ABC\S DSDSD\S SDSD\S\SDD}
  2.     str=%w{ABC\S DSDSD\S SDSD\S\SDD}
  3.      则%W 会 ABC  DSDSD  SDSD SDD
  4.        %w 会  ABC\S DSDSD\S SDSD\S\SDD
  5.   unshift():向数组头部添加数组元素
  6.   push():向尾部添加元素
复制代码
<<向数组尾部添加一个数组元素
19 类型转换
   to_s:转字符串  to_i:转为整数   to_f:转为浮点

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


  5.    .....
  6. end
  7. 21 def 方法:
  8.     def xxxx()
  9.       return  
  10.       end
复制代码
22 特殊方法
  1. class Dog
  2.     end    dog=Dog.new
  3.      def dog.show .....end
复制代码
直接为类的实例添加了方法
23 类方法
  1. class Dog
  2.        def Dog.show
  3.        .....
  4.      end
  5.     end
  6.     Dog.show
复制代码
24 类的实例变量用于类内部共享数据。用@符号开头,而类变量可以在各个类之间共享数据
  而类变量,用@@定义,可以在多个类中共享变量

25 属性读取器
  1. class Person
  2.        def name
  3.          @name
  4.         end
  5. end
复制代码
26 属性定义标识符
    attr  XXXX,TRUE 设置某个XXX属性为可写,false为只读
   attr_reader  属性1,属性2....设置多个属性为只读
   attr_writer   属性1,属性2....设置多个属性为可写
    attr_accessor   属性1,属性2....   设置多个属性为可读写

27 代码块
  1. 比如do
  2.          //代码块内容
  3.         end
  4.      def say
  5.          .....
  6.           yield  //则这里会调用代码块中的内容
  7.       end
  8.       say do
  9.           puts
  10.       end
复制代码
28 类的继承:class 子类<<父类,类的构造方法命名为initialize
20 class A
     end
  a=A.new
   如何通过a象JAVA反射那样得到A,可以这样:#{a.class}

论坛徽章:
0
2 [报告]
发表于 2011-10-24 08:01 |只看该作者
简单了点啊。

论坛徽章:
0
3 [报告]
发表于 2011-10-25 15:46 |只看该作者
谢谢分享,学习一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP