创建命令
- 命令行的输入数据
- 向程序传递数据,最简单的方法就是使用命令行。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.rbpattern = 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.rbdef hello puts "hello, ruby" end hello()
- 定义方法的语法如下
- 其他文件的引用
- 重复使用程序的某部分
- 大部分编程语言都提供了把多个不同程序组合为一个程序的功能。像这样,被其他程序引用的程序,我们称为库
- Ruby使用
require方法或者require_relative方法来引用库require 希望使用的库名 或者 require_relative 希望使用的库名 - 库名可以省略后缀
.rb - 调用
require方法后,Ruby会搜索参数指定的库,并读取库的所有内容。库内容读取完毕后,程序才会执行require方法后面的处理 -
require方法用于引用已存在的库。只需要指定库名,程序就会在预先定义好的路径下查找并读取与Ruby一起安装的库。而require_relative方法在查找库时,则是根据执行中的程序目录(文件夹)来进行的。这有利于程序读取写在不同文件的代码 -
use_grep.rbrequire_relative "grep" # 读取 grep.rb(省略“.rb”) pattern = Regexp.new(ARGV[0]) filename = ARGV[1] simple_grep(pattern, filename) -
grep.rbdef 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.rbrequire "pp" books = [ { title: " IT ", author: " Arile " }, { title: " science ", author: " 阿黄 " }, { title: " 好书 ", author: "花花" }, ] p books pp books