Ruby on Rails总结(三)

1、Ruby中将一个字符串的首字母变为大写capitalize()方法

         字符串.capitalize

         例如:

def say_goodmorning(name)

  result = "good morning #{name.capitalize}"

  return result;

end

puts say_goodmorning('liuyazhuang")  打印的结果是good morning Liuyazhuang首字母大写

注:可以在字符串中加入#{}来使用任意复杂的表达式;

 

2、<<

         通常在数组中使用"<<"方法,表示把值追加到数组的接收器上。

         在创建以单词为元素的数组时,Ruby有个捷径

         例如:att=['hello','world'] 等同于:attr=%w{helloworld}

 

3、Ruby中的散列

         散列值使用花括号而不是方括号,对于每个元素,必须提供两个对象:键和值

         例如:一个散列值如下:

         inst_names{

                  :cell =>'String',

                  :name =>'liuyazhuang',

                  :age =>'23'

         }

         左边的是键,右边的是值,根据键取值:

inst_names[:cell]返回String  inst_names[:name] 返回liuyazhuang   inst_names[:age]返回23

当要取得值在散列中没有时,则返回nil。如:inst_names[sex]返回 nil;

 

4、Ruby中的正则

         Ruby中使用代码/pattern/或%R{pattern}来生成正则表达式

         例如:对于所有包含"peral"或'pair'的字符串,可以编写与之相匹配的表达式/peral|pair/,也可以写成/p(eral|air)/(相当于提取公因式),程序通常使用=~来匹配运算符,来判断字符串是否匹配正则表达式

         例如:

                   ifline=~/p(eral|air)/

                            puts "匹配";

                   end

        

         /ab+c/:匹配以单个字母a开头,紧跟着单个或多个字母b,最后以单个字母c开头的字符串;

         /ab*c/:匹配单个字母a开头,紧跟0个或多个字母b,最后以单个字母c开头的字符串

         \d:匹配任何数字、 \s :匹配任何空白字符  \w匹配任何字母与数字的组合(单词)

 

 

5、代码块和迭代器

(1)代码块是由{}或者do...end及其内部代码所组成的。{}用于只有单行语句的代码块,do...end用于多行语句的代码块

         如:{puts "hello"}  

         do

                   club.hello("hello");

                   clib.puts("hello")

         end

         将代码块传递给方法时,只要将代码块放在方法的参数(如果有参数)后,

         例如:greet {puts "hi"}

         如果方法参数是带参数的:可以把参数放到代码块前:

         verbose_greet("liuyazhuang","xingming"){puts "hi"}

通过使用Ruby语句yield方法可以一次或多次的调用与其相关联的代码块

 

(2)迭代器

         animals =%w(dog, cat);

         animals.each{|animal|putsanimal}

 

(3)其他

         每个整数N实现times方法,该方法调用N次

         3.times{puts "hi"}   输出三个hi

 

6、Ruby中的异常

         Ruby中的raise方法通常用于抛出异常;方法 和代码块都包含在begin和end中,用rescue来拦截某种异常类;

         begin

                   content= load_blog_data(file_name)

         rescueBlogDataNotFound

                  STDERR.puts "File #{file_name} notfound";

         rescueBlogDataFormatError

                  STDERR.puts "Invalid blog data in #{file_name}";

         rescue Exception=>ex

                  STDERR.puts "General error loading#{file_name} :#{exc.message}";

         end

Resuce可以直接放在方法定义的最外层,并不需要包含begin/end块中的内容

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰 河

可以吃鸡腿么?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值