美文网首页
Ruby:基本语法

Ruby:基本语法

作者: Josaber | 来源:发表于2016-12-16 11:20 被阅读0次

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

感觉身体被掏空

变量

  • 局部变量:英文字母或_开头(注意关键字
  • 全局变量:$开头(不推荐
  • 实例变量:@开头
  • 类变量:@@开头
  • 伪变量:nil, true, false, self
  • 预定义变量

常量

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

多重赋值

  • 合并赋值
>> 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,我之前都没见过这种用法啊

  • 多重赋值还有更多的用法(提取数组中的数据),这里就不赘述了

输出语句

  • print
  • puts:自动在每个字符串末尾加换行符
  • p:原样输出不进行转义
  • pp:以换行调整输出结果

通过程序来看一下:

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

说明

  • 广义相等===是指:相等、同=~匹配、右边对象属于左边类 .etc.
    when即是使用===判断,但when可以指定多个值
  • if/unless可以作为修饰:puts "a>b" if a>b
  • 循环控制:break/next/redo
  • do - end等同于{ - }:约定多行用前者,写于一行用后者
    10.times {|i| puts i}
  • 若整个方法体都被begin-end包括,可以省略(只写rescueensure

正则表达式

/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"]
>> 

方法

  • 实例方法(最常用),例如to_s
    对象能够使用的实例方法是由所属的类决定的
  • 类方法,例如Array.new
    调用类方法,可以使用::替代.
  • 函数式方法:没有接受者,例如print

方法定义

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基础教程(中文第四版)》

相关文章

  • Ruby:基本语法

    下面,我要开始学习Ruby基本语法了,最近忙的只有晚上能学一会了。 变量 局部变量:英文字母或_开头(注意关键字)...

  • 初识Ruby

    Ruby MRI : Ruby官方解释器 安装 Linux 基本语法 irb :进入Ruby命令行环境 puts和...

  • Perl 6 from Ruby - Nutshell

    Perl 6 from Ruby - Nutshell 基本语法 语句结束分号 Ruby 使用换行(有几个例外)来...

  • 《Ruby 元编程》读后总结

    什么时候需要读这本书? 扫过一遍基本的 Ruby 语法,自己也写过一些 Ruby 代码,觉得 Ruby 也就是一个...

  • Ruby快速入门(30分钟)

    在本教程中,将探讨使用Ruby开始编程所需的基本语法,以及如何在30分钟内快速入门学习并使用Ruby编程语言。 注...

  • CocoaPods之Podfile\Podfile.lock

    什么是Podfile ? CocoaPods是用ruby实现的,因此Podfile文件的语法就是ruby的语法。p...

  • ruby 语法

    hello ruby 新建一个test.rb文件,在里面加一条 puts 'hello ruby',终端执行,ru...

  • ruby 语法

    1. Here Document: 多行字符串 2. BEGIN 语句 声明 code 会在程序运行之前被调用。 ...

  • [Ruby]语法

    所有的 Ruby 文件扩展名都是.rb 运行文件 $ rubytest.rb Ruby 程序中的空白 在 Ruby...

  • 《Ruby~笔记》0x03

    Ruby 基础语法及应用 IRB (Interactive ruby) 类似与 python shell prin...

网友评论

      本文标题:Ruby:基本语法

      本文链接:https://www.haomeiwen.com/subject/ezswmttx.html