Ruby 关键知识点总结
概论
- 分号, 换行符为语句结束; + - \ 表示语句后续
- ‘’#’’ 单行注释 , =begin … =end 多行注释
- 有IRb 控制台程序, 逐行执行, 命令行输入irb即可, 使用
irb --simple-prompt
让结果更易读, exit 退出 - 脚本编程(.rb文件), 使用解释器
ruby
来运行 - puts 输出数组【1,2,3】 会分成三行输出,
方法
-
方法名需要小写开头(大写开头会看作常量), 方法要找调用之前定义
-
局部变量: 小写字母/ 下划线_ 开头,
def say_hello(name='World') puts "Hello, #{ name}!" # 使用#{}来访问任何变量或常量的值 end say_hello # => "Hello, World!" say_hello("John") # => "Hello, John!"
-
可变参数
def sample(*test)
-
返回值: 默认返回最后一个语句的值; 或者 return a, b
全局变量
- 以$ 开头, 默认为nil的初始值, 用 -w 会报警告, 由于改变全局状态, 不建议使用
- 使用全局变量也要加KaTeX parse error: Expected 'EOF', got '#' at position 26: … `puts 'hello, #̲{ num}’` 否则错误很难找啊!
常量
- 以大写字母开头, 定义在类/模块内的可以在内部访问; 定义在外面的可以全局访问
- 常量不能定义在方法内
- 引用一个未初始化常量有错误, 对已经初始化的常量赋值也有警告
伪变量
-
特殊的量如下
self
: 当前方法的接收器对象。true
: 代表 true 的值。false
: 代表 false 的值。nil
: 代表 undefined 的值。__FILE__
: 当前源文件的名称。__LINE__
: 当前行在源文件中的编号。
字符串
-
String 是一个提供的类, 有庞大的方法集
-
创建: 使用 ’ or ‘’ 来做(多用’’, 有时候字符串内部有 ’ )
-
转义字符:
\b 退格, \r 回车符, \s 空格, \t tab, \a 蜂鸣警告
-
常用方法
方法调用方式 | 返回值 | 描述 |
---|---|---|
str.length |
Integer |
字符串的长度,空字符串返回 0 |
str.include?(other_str) |
True 或 False |
字符串包含,传入的参数为另一个字符串,如果该字符串中包含该子串,则返回True ,否则返回False |
str.insert(index, other_str) |
new_str |
字符串插入,参数index 是待插入的下标,other_str 是另一个字符串,返回的是插入后新的字符串,下标从 0 开始计算 |
str.split(pattern=$;, [limit]) |
Array |
字符串分割,将字符串按照pattern 进行分割,默认分割符为空格,返回值是一个包含若干字符串的数组 |
str.gsub(pattern, replacement) |
new_str |
字符串替换,将字符串按照pattern 匹配的字符更换为replacement ,返回替换后的字符串 |
str.replace(other_str) |
other_str |
字符串整体替换,将字符串整体替换成新的字符串 |
str.delete([other_str]+) |
new_str |
字符串删除,传入参数[other_str]+ 可包含多个字符,该方法匹配到str 中的所有字符并删除,返回新的字符串 |
str.strip |
new_str |
清除空格,清除掉str 中字符串前后的所有空格,换行符,回车符。不包含字符间的空格,返回新的字符串 |
str.reverse |
reverse_str |
字符串翻转,将字符串顺序翻转,返回翻转后的字符串 |
str.to_i |
Integer |
字符串转换为数字, 如果字符串以数字开头,则转换为开头数字的整型值,如果字符串不以数字开头,则返回 0 |
str.chomp |
new_str |
去掉字符串末尾的\n 或\r |
str.chop |
new_str |
去掉字符串末尾的最后一个字符,不管是\n ,\r 还是普通字符 |
str.downcase |
new_str |
将字符串转换为全小写 |
str.upcase |
new_str |
将字符串转换为全大写 |
数组
-
数组Array可以存储 String, Integer, Fixnum, Hash, Symbol等对象, 也可以是其他Array(成为多维数组), 添加元素时候, 会自动增长.
-
创建:
- new方法: arr = Array.new, new(5) 表示长为5的空Nil数组, arr = Array.new(5, ‘coder’)
- Array.[]( 1, 2, 3)
- Array[1, 2, 3]
- [1, 2, 3] # 最常用
-
访问数组元素, 用index索引, 从0开始, -1为最后一个. eg: arr[2,4](表示范围), arr[1…4], arr.at(0)
- 还可以用 arr.take(3) 访问前3个, drop(3) 访问索引3之后的所有元素
- (1…5) 这就表示Range了, (1…5).to_a 把Range 转换成 Array
-
常用方法
方法调用方式 返回值 描述 arr.empty?
true
或false
判段数组是否为空 arr.push(element)
new_array
在数组的最后加入元素 element
,返回加入元素后的新数组arr << 6
new_array
同上 arr.insert (index, elements)
new_array
在指定位置 index
塞进元素elements
,可以塞多个元素arr.insert (3, 'a', 'b', 'c')
arr.delete(element)
element
删除数组中所有为 element
的元素arr.compact
new_array
删除数组中所有空元素 nil
,返回删除空元素后的新数组arr.uniq
new_array
清除数组中的重复元素,返回去除重复后的新数组 arr.reverse
new_array
翻转 arr
,返回翻转后的新数组arr.clear
[ ]
删除数组中的所有元素,返回空数组 arr.count
Integer
没有参数时,返回数组的大小,带有参数时,返回数组中与参数相同元素的个数 arr.includes?(element)
true
或false
判断数组 arr
中是否包含元素element
arr.sort
new_array
将数组按照首字母进行排序,也可定制排序规则 arr.sample
element
从数组中随机取样,带参数取样个数,则可取多个样本 arr.flatten
new_array
将多维数组转换成一维数组 arr.join(',&#