Ruby语言学习系列--基本的ruby语法
1. 基本的ruby语法
1.1 变量、常量和类型
1) 定义变量
变量类型 |
描述 |
示例 |
局部变量(或伪变量) |
以小写字母或下划线卡头 |
var _var |
全局变量 |
以$开头 |
$var |
类变量 |
类中定义,以@@开头 |
@@var |
实例变量 |
对象中定义,以@开头 |
@var |
常量 |
以大写字母开头 |
Var |
2) 变量内插
在双引号内使用“#{ 变量名}”内插变量
a = 2 b = 3 puts "#{a} + #{b} = #{a+b}" #输入结果为:2 + 3 = 5 |
1.2 注释
1)单行注释:以#开头,如: #注释内容
2)多行注释:在=begin 和 =end 之间定义,如:
=begin
注释内容
=end
1.3 循环和分支
1.3.1 条件语句
If 形式 |
unless 形式 |
a =1 if y==3 |
a=1 unless y!=3 |
x= if a > 0 then b else c end |
x= unless a<=0 then a else b end |
if x<5 then a =1 else a =2 end |
unless x<5 then a =2 else a =1 end |
1.3.2 循环结构
#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 |
#for循环 for x in lisy 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 id 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 |
#each_index循环 list.each_index do |x| print “#{list[x]}” end |
1.3.3 异常
begin x = Math.sqrt(y/z) rescue ArgumentError #匹配错误类型 puts "Error taking square root" rescue ZeroDivisionError #匹配错误类型 puts "Attempted division by zero" else puts "Other Error" ensure #这部分代码在最后一定会执行 end |
1.3.4 类
class Hello #类名必须以大写字母开头 @@myname = "John" #类变量
def initialize(name,phone) @name,@phone = name,phone #定义实例变量 end
def hello #定义类方法 puts "#{ @name}的电话是#{ @phone}" end end
f = Hello.new("Tom","13100000000") #创建类对象 f.hello #调用类方法,结果为:Tom的电话是13100000000 |
1.3.5 模块
方法 |
说明 |
include ‘watir’ |
将模块的功能添加到当前空间中,不加载已加载的文件 |
extend ‘watir’ |
将模块的函数添加到对象中 |
load ‘watir’ |
读取文件,并将其插入到源文件的当前位置,以便从这个位置开始就可以使用其定义 |
1.3.6 case语句
case x when 1..10 #匹配数字 puts "First branch" when foobar() #批量方法返回的值 puts "Second branch" when /^hel.*/ #匹配正则表达式 puts "Third branch" else puts "Last branch" end |
函数名称 |
说明 |
示例 |
* |
将字符串拷贝N次 |
“ha”*4 >> “hahahaha” |
+ << concat |
连接字符串 |
“yes” + “no” >> “yesno” "yes" << "no" >> “yesno” "yes".concat("no") |
<=> |
比较字符串,返回值如下: 大于:-1 等于:0 小于:1 |
"Ab" <=> "ab" >> -1 "ab" <=> "ab" >> 0 "ab" <=> "Ab" >> 1 |
== 或 === |
判断两个对象是否相等 |
"1" == "1" >>true "1" == 1 >>flase |
=~ |
匹配正则表达式 |
"abc123abc" =~ /"d/ >> 3 |
[ ] 或 slice |
返回字符串的某一范围内的值 |
“abc”[0,2] >> “ab” "hello"[/llo/] >> “llo” “abc” slice [0,2] >> “ab” |
[ ]= |
替换字符串的某一范围内的值 |
a = “hello word” a[1,2]= “OO” puts a >>” hOOlo word” |
capitalize capitalize! |
把字符串的首字母大写,其他字母小写 |
"hi,Ruby".capitalize >> “Hi,ruby” |
chomp chomp! |
删除字符串后的空白字符 |
"string"r"n".chomp >> ” string” |
chop |
删除最后一个字符 |
"string".chop >> “strin” |
count |
返回该字符串中含的字符个数 |
a = "hello world" a.count "lo" >> 5 (l出现 3次,o出现 2次) |
delete delete! |
删除字符 |
"hello".delete "l","lo" » "heo" "hello".delete |