免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-10-24 11:10 |只看该作者 |倒序浏览
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
  5.              end
复制代码
4)符号对象 ,比如
      abc="dddd";
      ly=:abc
      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)
  8.     又如a,(b,*c),d="S",["H","E"]
复制代码
括号对括号的原则,则
  1. a=S,(b,*c)=[H,E],d=null,b=H,c=E
  2. 9) 注意,是[code]if  then
  3.           elsif ....

  4.           else
  5.               end
复制代码
10) unless语句
     unless 条件  then
         代码块1
     else
        代码块2
      end
   当true时,执行else语句块代码,为false时,才执行then的代码 [/code]11)
  1. case xxxx
  2.      when  xxxx
  3.      when   xxxx
  4.      else

  5. 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
  8.     end
复制代码
13) 迭代器
  1. names=["xxx","xxxx","dfdf","xxcx]
  2.      names.each do |name|
  3.            puts name
  4.       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 代码块
    比如do
         //代码块内容
  1.   end
  2.      def say
  3.          .....
  4.           yield  //则这里会调用代码块中的内容
  5.       end
  6.       say do
  7.           puts
  8.       end
复制代码
28 类的继承:class 子类<<父类,类的构造方法命名为initialize
20 class A
     end
  a=A.new
   如何通过a象JAVA反射那样得到A,可以这样:#{a.class}

论坛徽章:
0
2 [报告]
发表于 2011-10-25 00:48 |只看该作者
希望能坚持下来。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP