1. Ruby中的命名规则
1)局部变量名、方法参数名、方法名均以小写字母和下划线开头,多单词的名称一般以下划线连接;例如:change_to、class_name
2)实例变量名以@开头,类变量以@@开头;例如:@book、@@books
3)全局变量以$开头;
4)类名、模块名、常量名均以大写字母开头,多单词的名称以大写字母进行分辨。例如:Book、FileType、常量一般全部都是大写
注:@之后不能跟数字
2. Ruby中方法的定义
def 方法名(参数)
。。。。。
。。。。。
end
用return返回值,若无return,则返回函数体中最后一个表达式的计算结果。
类方法定义、类方法直接使用类名调用、普通方法使用类实例调用
ClassBook
def self.name
“book”
end
def model_name
“model”
end
end
Book.name
@book =Book.create
@book.model_name
3. Ruby的数据类型
字符串值加单双引号的区别
单引号内的文本即为字符串的值;双引号内的文本,Ruby首先用二进制的值替换带反斜杠的字符,如\t,\n,其次Ruby将把双引号内的#{表达式}替换成表达式的值。
注:string.capitalize功能是:将字符串的首字母改为大写(功能太多不用一一列出、简单看看记住功能的大概范围、用的时候查查就行了)
string.length:求字符串的长(size和length一样)
string.index(char):查询char字符在string中的位置,指标从0起
例如:
p “#{Book.name}\”name” => “book”name”
数组以整数作为键值,散列表以任何对象最为键值,两者均可存储任意对象(网上分别有比较全的数组和哈希常用方法列表,找到各自的网页保留下、包括排序、过滤、kv互换、遍历等功能)
a) 数组 array
定义: a = [ 1, ‘v’, “dfdf” ]
or a = %w{abc fdd 1}相当于 a=[‘abc’ , ‘fdd’ , ‘1’]
访问: a[i],指标从0起
b) 散列表 Hash(hash的子类型,hash本身是无序的,但是有个子类型的hash是有序的)
定义: a = { ‘a’ => 1, ‘b’=>’dfdfd’},key=>value模式
访问: a[ key ],若hash中无此key,则返回nil
3) 日期类型(Date、Time)
4) 数字类型(Integer、Float、Double)
4. 循环控制结构
1) if..else..
if ..
…
elsif …
……
else …
…..
end
注:
if 条件 语句(1句) end
|
语句 if 条件
|
ó |
l
unless 在判断上与if相反
1=1 ? 1 : 0 => 1
一般判断条件需要连接 && 与 ||
3) while
while …and/or…
……
end
注:
while 条件 语句(1句) end
|
语句 while 条件
|
ó |
一般在递归方法或者循环中使用
4) each
@books.each do |book|
p book.model_name
end
for in
@books.map{|book|book.model_name } => [“model”]
map用于创建新数组
arr.map { |a|2*a } #=> [2, 4, 6, 8, 10]
arr #=> [1, 2, 3, 4, 5]
arr.map! { |a|a**2 } #=> [1, 4, 9, 16, 25]
arr #=> [1, 4, 9, 16, 25]
1)/匹配模式1 | 匹配模式2/: | 为管道,要么满足模式1,要么满足模式2
2) /c+/:匹配一个或是多个c
3)/c*/:匹配零个或是多个c
4)/\s/:匹配一个空白符
5)/\d/:匹配任意一个数字
6)/ . /:匹配任意一个字符
应用:
a) 模式匹配用在条件语句中时, 用 ‘ =~ ’,如‘ php’ =~ ‘ python | php’ 作为条件时,返回true
b) 替换字符串
line.sub(/php/, ‘ruby’) 用ruby替换掉line中第一个出现的php
line.gsub(/php/, ‘ruby’) 用ruby替换掉line中所有的php
line.gsub(/php |python/, ‘ruby’) 用ruby替换掉line中所有的php及python