创建命令
- 命令行的输入数据
- 向程序传递数据,最简单的方法就是使用命令行。Ruby中,使用ARGV这个Ruby预定义好的数组来获取从命令行传递过来的数据。数组ARGV中的元素就是在命令行中指定的脚本字符串参数。
- 文件的读取
- Ruby除了读取命令行传递过来的字符串参数外,还可以读取预先写在文件中的数据
- Ruby的源代码中有一个名为
ChangeLog
的文件夹,里面记录了Ruby相关的修改日志 - 从文件中读取内容并输出,首先创建一个单纯读取文件内容的程序,流程如下
- 打开文件
- 读取文件的文本数据
- 输出文件的文本数据
- 关闭文件
read_text.rb
文件
filename = ARGV[0]
file = File.open(filename) # ①
text = file.read # ②
print text # ③
file.close # ④
- 创建一个要读取的文件
text
ruby read_text.rb text
- 其实如果只是读取文件内容,直接使用read方法会让程序更简单
filename=ARGV[0]
text=File.read(filename)
print text
- 从文件中逐行读取内容并输出
- 一下子读取全部文件内容会耗时
- 读取的文件内容会暂时保存在内存中,遇到大文时,程序有可能因此而崩溃
each_line
方法就是对文件进行逐行处理
filename = ARGV[0]
file = File.open(filename)
file.each_line do |line|
print line
end
file.close
- 从文件中读取指定模式的内容输出
-
Unix
中有一个grep
的命令。grep
命令利用正则表达式搜索文本数据,输出安扎指定模式匹配到的行。 grep.rb
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
file = File.open(filename)
file.each_line do |line|
if pattern =~ line
print line
end
end
file.close
ruby simple_grep.rb 模式 文件名
=ruby grep.rb hello text
- 方法的定义
- 定义方法的语法如下
def 方法名
希望执行的处理
end
- 简单的例子
ruby hello.rb
def hello
puts "hello, ruby"
end
hello()
- 其他文件的引用
- 重复使用程序的某部分
- 大部分编程语言都提供了把多个不同程序组合为一个程序的功能。像这样,被其他程序引用的程序,我们称为库
- Ruby使用
require
方法或者require_relative
方法来引用库
require 希望使用的库名
或者
require_relative 希望使用的库名
- 库名可以省略后缀
.rb
- 调用
require
方法后,Ruby会搜索参数指定的库,并读取库的所有内容。库内容读取完毕后,程序才会执行require
方法后面的处理 -
require
方法用于引用已存在的库。只需要指定库名,程序就会在预先定义好的路径下查找并读取与Ruby一起安装的库。而require_relative
方法在查找库时,则是根据执行中的程序目录(文件夹)来进行的。这有利于程序读取写在不同文件的代码 use_grep.rb
require_relative "grep" # 读取 grep.rb(省略“.rb”)
pattern = Regexp.new(ARGV[0])
filename = ARGV[1]
simple_grep(pattern, filename)
grep.rb
def simple_grep(pattern, filename)
file = File.open(filename)
file.each_line do |line|
if pattern =~ line
print line
end
end
file.close
end
ruby use_grep.rb hello text
- pp方法
- Ruby除了提供
p
方法,还提供了一个类似作用的方法–pp
。pp
是英语pretty print
的缩写。 - 要使用
pp
方法,我们需要使用require
方法引用pp
库 - 与
p
方法不同的是,pp
方法在输出对象的结果时,为了更容易看懂,会适当地换行以调整输出结果。 pp.rb
require "pp"
books = [
{ title: " IT ", author: " Arile " },
{ title: " science ", author: " 阿黄 " },
{ title: " 好书 ", author: "花花" },
]
p books
pp books