Ruby on Rails学习笔记之Ruby基础 —— Part1 基本概念

魏浩广
2023-12-01


Part2 数据类型
Part3 迭代器


Part1 基本概念

  • 非字符串代码中的空白字符会被忽略

  • 分号和换行符解释为语句结尾,运算符及\解释为语句延续

  • 标识符大小写敏感,包括字母、数字和_

注释写法

# 注释写法一 : 单行注释
=begin
注释写法2 : 多行注释
=end

交互式编程

控制台程序IRb,使用IRb Shell来逐行执行代码

启动

$ irb
$ irb --simple-prompt

退出

$ exit

脚本式编程

Ruby文件扩展名为.rb

运行

$ ruby [options] [.] [file] [arguments]

options

选项描述
-a与 -n 或 -p 一起使用时,可以打开自动拆分模式(auto split mode)。请查看 -n 和 -p 选项
-c只检查语法,不执行程序
-C dir在执行前改变目录(等价于 -X)
-d启用调试模式(等价于 -debug)
-F pat指定 pat 作为默认的分离模式($;)
-e prog指定 prog 作为程序在命令行中执行。可以指定多个 -e 选项,用来执行多个程序
-h显示命令行选项的一个概览
-i [ ext]把文件内容重写为程序输出。原始文件会被加上扩展名 ext 保存下来。如果未指定 ext,原始文件会被删除
-I dir添加 dir 作为加载库的目录
-K [kcode]指定多字节字符集编码。e 或 E 对应 EUC(extended Unix code),s 或 S 对应 SJIS(Shift-JIS),u 或 U 对应 utf-8,a、A、n 或 N 对应 ASCII
-l启用自动行尾处理。从输入行取消一个换行符,并向输出行追加一个换行符
-n把代码放置在一个输入循环中(就像在 while gets; … end 中一样)
-0[octal]设置默认的记录分隔符($/)为八进制。如果未指定 octal 则默认为 \0
-p把代码放置在一个输入循环中。在每次迭代后输出变量 $_ 的值
-rlib 使用 require 来加载 lib 作为执行前的库
-s解读程序名称和文件名参数之间的匹配模式 -xxx 的任何参数作为开关,并定义相应的变量
-T [level]设置安全级别,执行不纯度测试(如果未指定 level,则默认值为 1)
-v显示版本,并启用冗余模式
-w启用冗余模式。如果未指定程序文件,则从 STDIN 读取
-x [dir]删除 #!ruby 行之前的文本。如果指定了 dir,则把目录改变为 dir
-X dir在执行前改变目录(等价于 -C)
-y启用解析器调试模式
–copyright显示版权声明
–debug启用调试模式(等价于 -d)
–help显示命令行选项的一个概览(等价于 -h)
–version显示版本
–verbose启用冗余模式(等价于 -v)。设置 $VERBOSE 为 true
–ydebug启用解析器调试模式(等价于 -y)

内置函数

puts

输出自带换行

  • 如果输出内容为数组参数,则每一个元素占一行

gets

获取输入,以换行结束一次输入,返回值为字符串

变量

局部变量

局部变量以小写字母或_为开头

全局变量

全局变量以$开头,未初始化的全局变量的置为nil

$global_variable = 'Name'

def say_hello
    puts "Hello, #{$global_variable}!"
end

say_hello

常量

常量以大写字母开头

不允许在方法中定义常量,无论是否引用都会报错

不允许对常量重新赋值

伪变量

有着局部变量的外观(即不是以$或者大写字母开头的变量),但行为却是常量,不能对伪变量赋值

  • self: 当前方法的接收器对象。
  • true: 代表 true 的值。
  • false: 代表 false 的值。
  • nil: 代表 undefined 的值。
  • __FILE__: 当前源文件的名称。
  • __LINE__: 当前行在源文件中的编号。

变量访问

通过#{variable_name}来访问任何变量或者常量

变量赋值两种方法

$global_var1 = $global_var2
#{$global_var1} = #{$global_var2}

方法

方法命名要求:小写字母开头 ❌大写字母开头识别为变量名❌

语法

参数

无参数
def method_name
    puts "Hello"
end
有参数
def method_name(arg1, arg2)
    puts "Hello, #{arg1}, #{arg2}"
end
默认参数
def method_name(arg1, arg2 = value2)
    puts "Hello, #{arg1}, #{arg2}"
end
可变参数
def method_name(*arg)
    puts "参数个数:#{arg.length}"
end

函数调用

无参数调用
method_name
有参数调用1
method_name(arg1, arg2)
有参数调用2
method_name arg1, arg2, arg3

返回值

Ruby中一切皆表达式,一切表达式都有返回值

每个方法默认返回值为最后一个语句的值

def func1
    a = 100
    b = 200
end
# func1返回值为200
def func2
    a = 100
    b = 200
    return a, b
end
# func2返回值为[100, 200]
 类似资料: