您的位置:首页 > 编程语言 > Ruby

ruby 关键字运算符分隔符基本语法

2012-06-07 22:08 330 查看
关键字、运算符、分隔符

关键字、运算符、分隔符一起构成了一门编程语言的基本定义

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"实现。

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 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

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐