ruby使用小结

最近做了一些小项目,需要将很多JS件合并的到一起。开始是手工合并,但每次修改都需要自己复制粘贴非常麻烦,所以想到要开发一个小程序处理这些繁琐的工作。手上可选的方:ant、node.js、ruby。

不太喜欢ant,需要安装jdk,而且需要一些配置。感觉一个小项目用这么重的工具有点不值得。node.js处理文件、调用系统函数功能有点弱。所以最后选了ruby。

编程有有5年多了,也先后用过几种语言写过程序,但不得不说使用Ruby作为一种胶水语言处理一些日常工作实在是太方便了。ruby对字符串的支持实在是太赞了,提供了好多看上去有点古怪但却很实用的语法糖,比较喜欢的有如下几个:heredoc、通用分隔符、字符串插值。

通用分隔符应该是perl中首先引入的一个特性,被ruby借鉴来了。虽然样子不好看,但是用起来很方便,避免了自己处理很多转义字符以及字符串连接等繁琐的问题。比如如果我们要输入一个多行文本在Java中我们要这么写
String s = (
"fist line\n"
+"second line\n"
+ "...."
);

如果内容中包含有双引号等字符还需要自己做转义,很是麻烦,但是在ruby中,用通用分隔符来处理就简单的多
s = %Q{
first line
second line "hellow"
}

通用分隔符的作用远不止这些,这里有些资料[url]http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Literals[/url]对其进行讲解。下面是一些实用样例
#coding utf-8

name = "zhang-san"

p %q{ hello world #{name} } #=> " hello world \#{name} ", 字符串中变量没有替换
p %Q{ hello world #{name} } #=> " hello world zhang-san ", 字符串中变量被替换了
p %w{ hello world #{name} } #=> ["hello", "world", "\#{name}" ] 返回数组,变量没被替换
p %W{ hello world #{name} } #=> ["hello", "world", "zhang-san"] 返回数组,变量被替换
p %x{ ruby --version } #=> "ruby 1.9.2p290 (2011-07-09) [i386-mingw32]\n" 返回系统命令调用结果

reg = %r{ #宽松排列的正则格式,对于书写复杂
^ #格式的正则来说太方便了,我在JS中总想这样做
//import \s+
(\w+ (?: \.\w+)*)
(?: :([$\w]+))?
$
}xi

[color=red][b]通用分隔符使用的时候有个地方需要注意%与分隔符之间不能有空格,不能将%r{ }写成%r {}否则会报错[/b][/color]。

heredoc也是从perl中借鉴来的一个特性,作用上和通用分隔符差不多,都可以用来输入多行文本,并且自动处理字符串转义。唯一不同的是heredoc可以使用任意字符串做分隔符而不像通用分隔符那样只能使用单个字符。这个特性对于需要按模板生成某些HTML啊之类工作实在太方便了
multi_str = <<-EOF
heredoc也是从perl中借鉴来的一个特性,作用上和通用
分隔符差不多,都可以用来输入多行文本,并且自动处理
字符串转义。唯一不同的是heredoc可以使用任意字符串做
分隔符而不像通用分隔符那样只能使用单个字符。
EOF


至于字符串插值就不多说了,就是可以在字符串中包含变量省去了自己手工用加号链接字符串的麻烦。使用也很简单
name = 'zhang-san'
puts "hello #{name}\n welcom!" # #{name}会被zhang-san替换\n表示换行
puts 'hello #{name}\n welcom!' # #{name}未被替换,\n并没有表示换行

使用字符串插值的时候一个地方需要注意,必须用双引号括起来,单引号虽然也能表示字符串,但解释性不会将其中的字符串插值进行替换,也不会对转义字符做处理(\'除外)。作用虽小但对做Web开发整天需要拼HTML结构的我们来说实在是太方便了,终于可以去掉大量的加号了。

ruby好用的特性还有很多比如代码块、ERB等等,建议大家都用一下,用它来做些自动代码生成啊、生成一些测试数据啊什么的很方便的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值