非字符串代码中的空白字符会被忽略
分号和换行符解释为语句结尾,运算符及\
解释为语句延续
标识符大小写敏感,包括字母、数字和_
# 注释写法一 : 单行注释
=begin
注释写法2 : 多行注释
=end
控制台程序IRb,使用IRb Shell来逐行执行代码
$ irb
$ irb --simple-prompt
$ exit
Ruby文件扩展名为.rb
$ ruby [options] [.] [file] [arguments]
选项 | 描述 |
---|---|
-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 | 把代码放置在一个输入循环中。在每次迭代后输出变量 $_ 的值 |
-r | lib 使用 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
method_name(arg1, arg2)
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]