不少人都对rails感兴趣,我也是,不过我不急着用,所以不直接去学习rails,而想先稳当一点先把Ruby大致过一遍,熟悉下Ruby的特性。
变量命名规则:
======================================================
局部变量--以小写字母或下划线_开头,如:alpha, _ident, some_var
全局变量--以$开头,如:$beta, $B12vitamin, $NOT_CONST
实例变量--以@开头,如:@foobar, @thx1138, @NOT_CONST
类变量-----以@@开头,如:@@phydeaux, @@my_var, @@NOT_CONST
常量--------以大写字母开头,如:K6chip, Length, LENGTH
注释
===============================================================
以#开头,如:
a = 1 + 2 #注释部分...
#又是注释部分...
print "# 这里不是注释部分"
嵌入式文档(可用RDTOOL生成文档)
=======================================================
以=begin开头,以=end结尾,如:
=begin
this part is the embbed document.
hello,ruby!
=end
字符串
======================================================
可以用双引号和单引号,如:
"hello,world!"
'hello,every one!'
两者不同点:
1.双引号可以解释所有支持的转义字符,如:
"hello,\t world!\n"
单引号则只能支持两种:\\和\'
'hello,\\ world!'
2.双引号中可以嵌入变量或表达式并计算,如:
myname = "zarknight"
"hello,#{ myname}!" #结果为hello,zarknight!
"The sum is #{ 1+2+3} ."
而单引号则会当作普通字符来处理。
一般情况下,嵌入的变量或表达式需要以#为前缀,包含在括号内,如:#{abc},但如果是以$或@开头的变量,可以省略括号,如#$abc
%q和%Q是广义的单引号和双引号,可以这样使用:
%q{ We can embed \\ and \} in this string.}
%Q("Hello, #{ name} ," I said to her.)
============================================================
``(反引号)或%x可以执行系统命令,如:
·grep i meta *.html | wc l·
%x[grep i meta *.html | wc l]
============================================================
ruby中的正则表达式示例如下:
/^[a-zA-Z]*$/
或
%r{^[a-zA-Z]}
============================================================
Ruby的数组:
数组可以包含任意类型的元素,包括混合类型的元素,用法如下:
[1, 2, 3]
[1, 2, "buckle my shoe"]
[1, 2, [3,4], 5]
["alpha", "beta", "gamma", "delta"]
可以用%w方便的生成字符串数组(前提是目标字符串中没有空格,否则,生成出来的就和你的意愿不一样了),如:
%w{aaa bbb ccc ddd}
============================================================
Ruby的hash,也称联合数组或字典,用法如下:
{ 1=>1, 2=>4, 3=>9, 4=>16, 5=>25, 6=>36 }
{ "cat"=>"cats", "ox"=>"oxen", "bacterium"=>"bacteria" }
{ "hydrogen"=>1, "helium"=>2, "carbon"=>12 }
{ "odds"=>[1,3,5,7], "evens"=>[2,4,6,8]}
{"foo"=>123, [4,5,6]=>"my array", "867-5309"=>"Jenny" }
============================================================
循环与分支
============================================================
if x < 5 then
statement1
end
等价形式:
unless x >= 5 then
statement1
end
也可以这样写:
statement1 if x < 5
还可以这样做赋值:
x = if x < 5 then a else b end
Ruby的case与语句示例:
case x
when "hello"
puts "oper one"
when "world"
puts "oper two"
else
puts "other oper"
end
循环的用法有很多种:
# while循环
i=0
while i < list.size do
print "#{ list[i]} "
i += 1
end
# until循环
i=0
until i == list.size do
print "#{ list[i]} "
i += 1
end
# post-test while(即先执行一次循环体再做判断的while循环)
i=0
begin
print "#{ list[i]} "
i += 1
end while i < list.size
# post-test until(即先执行一次循环体再做判断的until循环)
i=0
begin
print "#{ list[i]} "
i += 1
end until i == list.size
# for循环
for x in list do
print "#{ x} "
end
# 'each' 迭代器
list.each do |x|
print "#{ x} "
end
# 'loop' 方法
i=0
n=list.size-1
loop do
print "#{ list[i]} "
i += 1
break if i > n
end
# 'times' 迭代器
n=list.size
n.times do |i|
print "#{ list[i]} "
end
# 'upto' 迭代器
n=list.size-1
0.upto(n) do |i|
print "#{ list[i]} "
end
# for循环2
n=list.size-1
for i in 0..n do
print "#{ list[i]} "
end
# 'each_index'迭代器
list.each_index do |x|
print "#{ list[x]} "
end
===========================================================
Ruby的block机制
示例一:
def repeate_test(condition)
yeild
retry if not condition
end
j=0
repeat_test (j < 10) do {
j+=1;
print j,"\n"
}
实例二:
def my_sequence
for i in 1..10 do
yield i
end
end
my_sequence { |x| print x**3, "\n"}
==========================================================
Ruby的异常处理机制:
使用raise抛异常(rails不是关键子,是Kernel模块的一个方法,它还有个别名fail),用法:
raise # Example 1
raise "Some error message." # Example 2
raise ArgumentError # Example 3
raise ArgumentError, "Invalid data." # Example 4
raise ArgumentError.new("Invalid data.") # Example 5
使用rescue(相当与java中的catch)处理异常:
begin
x = Math.sqrt(y/z)
# ...
rescue ArgumentError
print "Error taking square root.\n"
rescue ZeroDivisionError
print "Attempted division by zero.\n"
或
begin
x = Math.sqrt(y/z)
# ...
rescue => err
print err, "\n"
end
end
raise ArgumentError, "Invalid data.", caller[0]
retry关键字可以用来重新执行begin开始的语句。
使用ensure(相当与java中的finally)来善后:
begin
# Error-prone code...
rescue
# Handle exceptions
ensure
# This code is always executed
end
分享到:
相关推荐
The Ruby Way(第2版) <br>The Ruby Way assumes that the reader is already familiar with the subject matter. Using many code samples it focuses on "how-to use Ruby" for specific applications, either ...
The Ruby Way 第三版(英文版),全书22章,书中包含600多个按主题分类的示例。每个示例都回答了“如何使用Ruby来完成”的问题。 ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
内含以下4个文档: 1、Addison.Wesley.The.Ruby.Way.2nd.Edition.Oct.2006.chm 2、O'Reilly.Learning.Ruby.May.2007.chm 3、Programming Ruby 2e.pdf 4、ruby中文文档.chm
《The Ruby Way 第二版》...“《The Ruby Way (第2版)中文版》在阐述元编程(metaprogramming)等方面尤其出类拔萃,而元编程是Ruby最引人注目的方面之一。” ——Ruby on Rails之父David Heinemeier Hansson倾力推荐!
the ruby way the ruby way
《The Ruby Way 2nd Edition》是一本深入探讨Ruby编程语言的经典著作,旨在帮助读者全面理解和掌握Ruby的精髓。这本书的第二版在2006年出版,由Addison-Wesley出版,作者通过深入浅出的方式,揭示了Ruby语言的强大...
这个暑假回家没事干闲的蛋疼,正好手头有一本《七周七语言》,然后就开始从Ruby学起,到scala结束。中间的Io和prolog就被华丽丽的跳过了,因为prolog语法太奇葩,Io有没什么好的资料可以看,尽管我觉的Io应该会是一...
学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及Demo源码.zip学习Ruby的笔记以及...
此外,加入 Ruby 社区也是学习 Ruby 的一个重要步骤。 Ruby 社区非常活跃,有很多优秀的开发者和项目。加入 Ruby 社区可以帮助你获取最新的信息、分享经验和获取帮助。最后,学习 Ruby 需要耐心和持久。 Ruby 是一种...
ruby基础笔记,自学笔记,ruby基础语法非常全面ruby基础笔记,自学笔记,ruby基础语法非常全面
Ruby中机器学习的实用资源
Ruby学习笔记 01 类的属性与方法 02 访问控制 03 Container(Array/Hash) 04 Iterator 05 简单数据类型 06 范围 07 方法 08 条件控制 09 异常处理
《The Ruby Way》是一本备受推崇的Ruby编程教程,它以独特的方式深入浅出地介绍了Ruby语言。这本书的核心理念是“如何解决问题”,作者通过实际的编程示例和问题解决策略,帮助读者理解Ruby的强大功能和优雅语法。 ...
《Ruby Way》一书还会详细介绍Ruby的Gem包管理器,Gem是Ruby生态系统的核心部分,提供了大量的库和工具,让开发者能够轻松地安装和使用第三方软件包。此外,书中可能涵盖了Ruby on Rails框架,它是基于Ruby构建Web...
在Ruby编程语言中,时间日期处理是至关重要的,特别是在开发涉及日志记录、事件调度或数据分析的应用程序时。"11.5 时间日期the ruby way"这个主题深入探讨了Ruby中处理时间日期的最佳实践和常见用法。让我们逐一...
标题中的"ruby笔记1ruby笔记1ruby笔记1"暗示了这是一份关于Ruby编程语言的学习笔记,可能包含了作者在学习过程中的重点、难点以及心得体验。描述中的内容重复了标题,进一步强调了这是关于Ruby的深入学习记录。标签...