创建命令

  1. 命令行的输入数据
  • 向程序传递数据,最简单的方法就是使用命令行。Ruby中,使用ARGV这个Ruby预定义好的数组来获取从命令行传递过来的数据。数组ARGV中的元素就是在命令行中指定的脚本字符串参数。
  1. 文件的读取
  • Ruby除了读取命令行传递过来的字符串参数外,还可以读取预先写在文件中的数据
  • Ruby的源代码中有一个名为ChangeLog的文件夹,里面记录了Ruby相关的修改日志
  • 从文件中读取内容并输出,首先创建一个单纯读取文件内容的程序,流程如下
  • 打开文件
  • 读取文件的文本数据
  • 输出文件的文本数据
  • 关闭文件
  • read_text.rb文件
filename = ARGV[0]
 file = File.open(filename) # ①
 text = file.read # ②
 print text # ③
 file.close # ④
  • 创建一个要读取的文件text
  • ruby基础教程 ruby 教程_后端

  • ruby read_text.rb text
  • ruby基础教程 ruby 教程_ruby_02

  • 其实如果只是读取文件内容,直接使用read方法会让程序更简单
filename=ARGV[0]
text=File.read(filename)
print text

ruby基础教程 ruby 教程_Ruby_03

  • 从文件中逐行读取内容并输出
  • 一下子读取全部文件内容会耗时
  • 读取的文件内容会暂时保存在内存中,遇到大文时,程序有可能因此而崩溃
  • 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
  • ruby基础教程 ruby 教程_ruby_04


  • 方法的定义
  • 定义方法的语法如下
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
  • ruby基础教程 ruby 教程_数据_05


  1. pp方法
  • Ruby除了提供p方法,还提供了一个类似作用的方法–pppp是英语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

ruby基础教程 ruby 教程_ruby基础教程_06