ruby学习之,数据 表达式 控制

来源:互联网 发布:大连理工网络教育官网 编辑:程序博客网 时间:2024/05/30 04:54

因为我用习惯了java,所以一般语法会跟java对比


变量的命名:必须是单个实体(不要包含空格),必须以字母和下划线开头,区分大小写.跟java差别不大


数字与表达式跟java差别不大

1.也会有x+=1的写法,但是不存在x++的写法

2.注意浮点型:10是整型,10.0是浮点型,可以用to_f和to_i互相转换...整形->字符型to_s

3.常量:用大写字母开头 Pi=3.141952,与类命名相似,应为一旦定义就固化

4.文本字符串:String类,单行用""号,多行用%q{},其中{}号可以用<>,()或是自选的两个分界符!!!!!!哇!!!还可以x = <<END_MY_STRING_PLEASE直到你写入     END_MY_STRING_PLEASE,输入字符串才结束,当然END_MY_STRING_PLEASE可以自定义

    4-1.字符串表达式,有+号,*号(复制N次),<,>,==(比较acsii码,?A转为acsii码,65.chr转为字符),我把字符串转化为数组,不就可以减咯~哇哈哈~

    4-2.插写,在字符串中加入#{...}这样一段代码

    4-3.字符串的一般方法:capitalize,downcase,upcase,chop.next.hash.reverse

    4-4.正则表达式...................................专门给一章讲述

5.数组

定义一个基本数据x = [1,2,3,4,5],;另外数组的不需要预定义空间 x=[],不限定类型

数组插入末尾:<<操作符,或用方法push()

数组弹出元素:使用pop方法

数组->字符串:如果数组包含字符元素,可以用join合唱一个大字符串 x=["a","b","c"]     x.join->"abc"    ,可以接受一个参数隔断每个元素x.join(', ')->"a, b, c"

字符串->数组:"huang zi hao".scan(/\w/)可以获取一个以一个字符为元素的数组

                         不扫面分切,可以用split,另外几乎所有内置类都有inspect方法将对象文本化表示"huang zi hao".split(/s+/).inspect

数组迭代:可以用each,collect或者传统的while...end      ep:  [1,2,3,4].each{|element| puts("the number is:"+element.to_s)}

发现循环都可以用   |element|  获得迭代子

数组操作:+ , -  , .empty? , .include?(xxx) , .first , .last(.first , .last可以指定参数) ,  .reverse反序  (记住inspect)

6.散列表

就是个键值对嘛,可以是任何对象哦~

dictionary = { 'cat' => 'feline animal' , 'dog' => 'canine animal' }

puts dictionary[ 'cat' ]

循环: dictionary.each{ |key,value| .......}

操作:检索x.keys.inspect,删除x.delete("key"),有条件删除x.delete_if{ |key,value| ....}

7.时间对象Time


控制结构

1.写个奇怪的比较语法puts "you are too young" if age<18    ,比较操作只有<=>特别点(x<=>y,x大1,y大-1,相等0),还可以用连接符 "&&"  "||" 

     与if相反的是unless,另外age.between?(12,18)这类的方法,以后将会学到相关类的函数

来个正常点得写法

if age<18

......//插入多行操作吧~~~~

[elseif]

[else]

exit

end

2.三目运算符  XX ? XX : XX

3.case ....  when...... when.... else

4.while ... end

5.util ... end

6.代码块   do.......end 或 {}

      可以自己编写方法,处理代码块

7.循环的语法也很不同 5.times do puts("Test") end,倒是do...end有点亲切感,然而也可以用{}代替do..end,但是一般单行用{},多行用do..end

    除了这个,还有1.upto(5){  |number|  ......................}//number是用来获取迭代计算器的值(名字随便起)

                             10.downto(5)do |number|.....................end

                              0.step(50,5){|number|....................}//从0到50,每步递进5

   循环没for爽啊......


8.范围

('a’..'z')/(1..3)可以用to_a转化为数组

a=[1,2,3,4,5,6,7,8,9]

puts a[1..3].inspect

 

9.符号http://zarknight.iteye.com/blog/126414

符号不包含值或对象,不象变量一样,而是用作代码中固定的名字。符号不会创建新对象,只是值的引用

用在散列表更有用:

person1={ :name => "Fred" , :age => 20 , :gender => :male}

person2={ :name => "Fred1" , :age => 21 , :gender => :male}

1:是Symbol类的实例
2: 是名称的对象
3:符号是不可改变的字符串,也不可被GC的
4:在大多数情况下,接受符号作为参数的方法也能接受字符串,反过来不成立;
5:用符号要比用字符串省内存
6:每个符号在对象空间中只出现一次:和Fixnum一样,都存为直接值
7:有意思的Symbol#to_proc
ri Symbol 可看究竟

原创粉丝点击