第一章
交互式实验环境启动命令 irb
文件加载的命令 load "filename.rb"
运行一个文件 ruby filename.rb, ruby -w 激活warning
查看帮助文档命令 ri class.method
第二章
注释符号 #
Bool值
false和nil为假,其他都为真
实例化
object = Clazz.new(arguments),new是继承自Object的一个static方法
方法调用
"str".length => 3 不一定要括号()
"str".index("r") => 2 index从零开始计数
-1942.abs => 1942 整数也是对象,Ruby没有的primitive数据,都是对象
函数定义
def add(x, y)
return x + y
end
函数的最后一个表达式即是返回值,所以return x + y也可以写成x + y.
变量名
全局 $global
实例(field) @field
类(static) @@class_field
局部 小写字符和下划线开头
字符串
"Good night, #{name}" <=> "Good night, %s", name
'Good night, #$name' 如果name是全局变量
"Good night, #@name" 如果name是实例变量
正则表达式
Pattern以/ /头尾, match操作符 =~
\s 单个空格字符
\d 单个数字
\w 单词中的字符
. 单个字符
(|) 两则取一
"Java python c#" =~ /python/ 返回5
"Java python c#".sub(/c#/, 'ruby') 返回Java python ruby
"c# Java c#".gsub(/c#/, 'Java') 返回 Java Java Java
列表
a = [1, "cat", 3.14]
a[0] = nil
a = %w{ ant bee cat } <=> a = [ "ant", "bee", "cat" ]
Hash
numbers = { "one" => 1, "two" => 2, "three" => 3}
默认的不存在键返回值是nil,可以改变
hist = Hash.new(0)
hist["key1"] => 0
hist["key1"] = hist["key1"] + 1
hist["key1"] => 1
输出
puts 自动加上换行符
print 没有换行符
printf("Number: %5.2f,\nString: %s\n", 1.23, "hello")
输入
gets 输入一行,带换行符
控制结构
if <condition> while <condition>
<statements> <statements>
elsif <condition> end
<statements>
else
<statements>
end
puts "Danger, Will Robinson" if radiation > 3000
<=>
if radiation > 3000
puts "Danger, Will Robinson"
end
square = 2
square = square * square while square < 1000 # 照样是先判断条件,为true,运行循环
Block是一段匿名的代码或者说是一个匿名的函数,可以用yield调用
def call_block
yield("hello", 99) # 调用block
end
call_block { |str, num| puts str + num } # 定义block
需要Block的函数,类似于函数式语言中的High Order函数,他的一个参数是函数。
animals = %w{ ant bee cat }
animals.each { |animal| print animal, " " }
5.times { print '+' }
3.upto(6) { |i| print i }
('a'..'e').each { |c| print c }
并行赋值
x, y = y, x # 交换了x和y的值
例子: 计算Fibonacci数
def fib_up_to(max)
i1, i2 = 1, 1
while i1 <= max
yield i1
i1, i2 = i2, i1 + i2
end
end
fib_up_to(1000) { |f| print f, " " }
判断一变量名是否定义
defined?(name)
转载请保留
http://www.blogjava.net/xilaile/archive/2007/05/06/115497.html