本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Ruby Names
Rails 使用符号来标识事物。特别是,在命名方法参数和在散列中查找事物时,它使用
它们作为键。下面是一个例子:
redirect_to :action => "edit", :id => params[:id]
一个符号看起来像一个变量名,但是它的前缀是冒号。符号的例子 包括: action,: line _ items,and: id。符号作为字符串文字,神奇地变成常量。或者,你可以把冒号看作是一个名为 id 的东 西,那么: id 就是一个名为 id 的东西。
Array
Ruby 有一个创建单词数组的快捷方式:
a = [ 'ant', 'bee', 'cat', 'dog', 'elk' ]
# this is the same:
a = %w{ ant bee cat dog elk }
Regular Expressions 正则表达式
正则表达式允许您指定字符串中要匹配的字符模式。在 Ruby 中,你通常通过写 /pattern/或% r { pattern }来创建一个正则表达式。
例如,我们可以使用正则表达式/Perl | Python/来编写与包含文本 Perl 或文本 Python的字符串匹配的模式。
程序通常使用 = ~ match 操作符对正则表达式测试字符串:
if line =~ /P(erl|ython)/
puts "There seems to be another scripting language here"
end
你可以在模式中指定重复。/ab + c/匹配包含 a 后跟一个或多个 bs 后跟一个 c 的字符 串,将加号改为星号,并且/ab * c/创建一个正则表达式,该正则表达式匹配一个 a、0或多个bs 和一个 c。
反向斜杠开始特殊的序列; 最值得注意的是,d 匹配任何数字,s 匹配任何空白字符,w 匹配任何字母数字(单词)字符,a 匹配字符串的开始,z 匹配字符串的结束。例如,通 配符前面的反斜杠.,使字符按原样匹配。
Exceptions
Exception 是 Exception 类或其子类的对象。Raise 方法会引发一个异常。这会中断通过代码的正常流。相反,Ruby 会在调用堆栈中搜索能够处理这个异常的代码。
包装在开始和结束关键字之间的方法和代码块使用拯救子句拦截特定类别的异常:
begin
content = load_blog_data(file_name)
rescue BlogDataNotFound
STDERR.puts "File #{file_name} not found"
rescue BlogDataFormatError
STDERR.puts "Invalid blog data in #{file_name}"
rescue Exception => exc
STDERR.puts "General error loading #{file_name}: #{exc.message}"
end
可以直接将 rescue 子句放在方法定义的最外层,而不需要将内容封装在开始/结束块中。