ruby 关键字运算符分隔符基本语法
关键字、运算符、分隔符
关键字、运算符、分隔符一起构成了一门编程语言的基本定义
Ruby中的常用分隔符如下:
符号
名称
用途
;
分号
用来分隔一行中的多个语句
()
圆括号
提高优先级;定义方法时容纳参数列表
" "
空格/分隔字符
在可省略"()"的地方代替"()"
,
逗号
隔开多个参数
.
点
将对象与它的方法隔开
::
双冒号
域作用符,将模块(类)与它的常量隔开
Ruby中的关键字如下:
模块定义:module
类定义: class
方法定义:def,undef
检查类型:defined?
条件语句:if,then,else,elsif,case,when,unless
循环语句:for,in,while,until,next,break,do,redo,retry,yield
逻辑判断:not,and,or
逻辑值: true,false
空值: nil
异常处理:rescue,ensure
对象引用:super,self
块的起始:begin/end
嵌入模块:BEGIN,END
文件相关:__FILE__,__LINE__
方法返回:return
别名: alias
注:BEGIN模块相当于C语言中的宏, END模块用来作一些收尾工作。有了require,include,应该取消BEGIN和END的语法定义。
ruby中的运算符如下:优先级(由高到低)
能否重写
运算符
描述
Y
[]、[]=
数组下标、数组元素赋值
Y
**
乘冥
Y
!、~、+、-
非、位非、一元加(正号)、负号
Y
*、/、%
乘、除、模
Y
+、-
加、减
Y
>>、<<
右移、左移
Y
&
位与
Y
^、|
位异或、位或
Y
<=、<、>、>=
小于等于、小于、大于、大于等于
Y
<=>、==、===、=~、!=、!~
各种相等判断(不能重写=~、!=、!~)
N
&&
短路与
N
||
短路或
N
..、...
区间的开始点到结束点
N
? :
三元条件运算符
N
=、%=、~=、/=、-=、+=、|=、&=、>>=、<<=、*=、&&=、||=、**=
各种赋值
N
defined?
检查类型
N
not
逻辑非
N
or、and
逻辑或、逻辑与
N
if、unless、while、until
判断与循环
N
begin、end
定义方法,类,模块的范围
值得注意的是,ruby中没有"++"、"--"一类的运算符,但可以通过"+=1"、"-=1"实现。
变量类型 |
描述 |
示例 |
局部变量(或伪变量) |
以小写字母或下划线卡头 |
var _var |
全局变量 |
以$开头 |
$var |
类变量 |
类中定义,以@@开头 |
@@var |
实例变量 |
对象中定义,以@开头 |
@var |
常量 |
以大写字母开头 |
Var |
a = 2 b = 3 puts "#{a} + #{b} = #{a+b}" #输入结果为:2 + 3 = 5 |
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 |
#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 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 |
#each_index循环 list.each_index do |x| print “#{list[x]}” end |
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 |
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 |
方法 |
说明 |
include ‘watir’ |
将模块的功能添加到当前空间中,不加载已加载的文件 |
extend ‘watir’ |
将模块的函数添加到对象中 |
load ‘watir’ |
读取文件,并将其插入到源文件的当前位置,以便从这个位置开始就可以使用其定义 |
case x when 1..10 #匹配数字 puts "First branch" when foobar() #批量方法返回的值 puts "Second branch" when /^hel.*/ #匹配正则表达式 puts "Third branch" else puts "Last branch" end |