Ruby基础教程(Day3)—— 创建命令

本文介绍了Ruby编程语言的基础知识,包括如何通过命令行和文件读取数据,定义方法以及引用其他文件。详细讲解了使用ARGV数组接收命令行参数,File类的各种读取方法,以及通过require方法引用库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建命令

  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 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
        在这里插入图片描述
  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
    

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值