Ruby:基本语法

2016-12-16  本文已影响0人  Josaber

下面,我要开始学习Ruby基本语法了,最近忙的只有晚上能学一会了。

感觉身体被掏空

变量

常量

大写字母开头(可以修改,但有警告)

多重赋值

>> a,b,c=1,2,3
>> p [a,b,c]
[1, 2, 3]       # 挨个赋值
>> a,b,c=1,2
>> p [a,b,c]
[1, 2, nil]     # 缺少的用nil
>> a,b,c=1,2,3,4
>> p [a,b,c]
[1, 2, 3]       # 多余的丢弃
>> a,b,*c=1,2,3,4
>> p [a,b,c]
[1, 2, [3, 4]]  # 未分配的值封装为数组赋给*变量
>> a,*b,c=1,2,3,4
>> p [a,b,c]
[1, [2, 3], 4]  # 同上
>> 

置换变量:a,b = b,a(厉害了,word哥!)这个666,我之前都没见过这种用法啊


输出语句

通过程序来看一下:

➜  ~ irb --simple-prompt 
>> print "123\n","123"
123
123
=> nil
>> puts "123","123"
123
123
=> nil
>> p "123\n","123"
"123\n"
"123"
=> ["123\n", "123"]
>> 

可以看出上面的结论,同时也可以看出p方法与另外两个方法不同(注意返回值


# 我为什么要加横线呢,因为上边是我昨晚上写的

忍住

控制语句

if - then - (elseif-then/else) - end(条件为真执行)
unless - then - (else) - end(条件为假执行)
case - (when - then)* - else - end(when可指定多个值,广义相等)

for [var] in [start]..[end] do - end(for [var] in [object] do - end)
while - do - end
until - do - end(条件为假时执行)
[number].times do |[var]| - end
[object].each do |[var]*| - end(([start]..[end]).each do |[var]| - end)
loop do - (break) - end

begin - rescue [Exception] => [ex var] - ensure - end(类比try-catch-finally
使用raise抛出异常
可以使用retry指定重新回到begin处重新执行(适当的sleep

若不定义[ex var],则:
$! 表示最后发生的异常对象
$@ 表示最后发生异常的位置信息(=$!.backtrace

说明

正则表达式

/pattern/ =~ "String"返回匹配索引位置或nil
/pattern/i表示不区分大小写

=> ["joshua", "lbq", "ben"]
>> names.each do |name|
?> if /b/ =~ name  # nil与false表示假,其余均为真
>> puts name
>> end
>> end
lbq
ben
=> ["joshua", "lbq", "ben"]
>> 

方法

方法定义

def [function] (args=default...) - return - end
def [function] (arg 1: default 1, arg 2: default 2, ..., **undefined) - end(推荐

返回真假值的方法以?结尾
参数个数不确定,参数前加*
省略return则将最后一个表达式作为返回值(return表示返回nil)
带块方法:yield

补充:对于多个单词组合的变量名
使用 _ 隔开各个单词(变量名/方法名
单词以大写字母开头(类名/模块名

我看到的晚了,作业已经写完了[:cry]

库与引用库

require "lib"
# init ...
# call 

先到这里,我去写个作业去(感觉已经可以做了,let me see 一 see)


类的创建(类名首字母大写)

class - def initialize(args) - end(new方法调用) - (def [function])* - end
@[var]:实例变量
self变量

存取器

attr_reader
attr_writer
attr_accessor

attr_accessor: name等同于:

def name
  @name
end
def name=(value)
  @name = value
end

权限

public(函数默认为public,initialize除外)
private(initialize默认
protected

模块

模块创建(首字母大写)

module - module_function: [function]* - end


语法太多,请自行查看
推荐使用《Ruby基础教程(中文第四版)》

上一篇下一篇

猜你喜欢

热点阅读