- 论坛徽章:
- 0
|
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:输出每个范围的每个元素
比如:- 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 thenend
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
复制代码 1 数组- 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} |
|