Ruby编程实战指南:从零基础到精通

发表时间: 2023-04-07 11:45

推荐使用软件:sublime
下载地址:
http://www.sublimetext.com

SublimeText汉化包下载地址:
https://github.com/Trojain/sublime-package

1、下载文件: Default.sublime-package
打开sublime text,打开菜单 => preferences => Browse Packages



2、进入到文件管理器,返回上一层,打开“Installed Packages”文件夹,将Default.sublime-package汉化文件粘贴到 Installed Packages 文件夹下面,软件瞬间就被汉化了。


一、创建.rb文件

1、手动创建,打开记事本,写ruby代码:

puts "hello,ruby 2019!"

然后保存,保存的文件后缀名一定是.rb。这里我的文件名是test.rb 保存的位置是:
/Users/lmy/Desktop/test.rb 。

2、vim创建

第一步:打开终端,输入:

vim I

第二步:出来的编辑器, 这里可以编辑代码, 输入ruby代码:

puts "hello,ruby 2019!"

第三步:退出并保存到文件
按ESC键 跳到命令模式,然后输入:

:w /Users/lmy/Desktop/test.rb 

文件会保存到桌面上test.rb 。

3、运行ruby

打开命令行,输入:

ruby  /Users/lmy/Desktop/test.rb 

回车,然后就输出:你好,世界2019! 了。

vim常用命令:

:w 将编辑过的文本保存,但不退出vi
:w [filename] 编辑后的文档另存为filename,不退出vi
:w! 若文本属性为只读时,强制保存,不退出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
q: 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,将文档还原成最原始状态,从上次保存文件开始再编辑
ZZ 若文档没有改动,则不储存离开,若文档改动过,则储存后离开,等同于:wq
:r [filename] 在当前光标所在行的下面读入filename文档的内容
:set nu 在每行的行首显示行号
:set nonu 取消行号

4、高级应用--遍历文件

def traverse_dir(file_path)    if File.directory? file_path        Dir.foreach(file_path) do |file|            if file !="." and file !=".."                traverse_dir(file_path+"/"+file)            end        end    else        puts "File:#{File.basename(file_path)}, Size:#{File.size(file_path)}"    endendtraverse_dir('/Users/lmy/Desktop/ruby/QKTest.bundle')

require 'find' Find.find('/Users/lmy/Desktop/ruby/QKTest.bundle') do |path|  #puts path   puts "File:#{File.basename(path)}, Size:#{File.size(path)}"end

5、函数传参

ruby文件代码:

def inputName(name)    puts("传进来的参数是: #{name}")endname=ARGV.first  # ARGV获取传进来第1个的参数inputName(name)

使用方法

ruby QKPdf.rb 刘明洋

输出:

传进来的参数是: 刘明洋

6、接收命令行输入的值

ruby文件代码:

puts("请输入您的姓名:")print("> ")file_again=STDIN.gets.chomp()#获取inputputs("收到您输入的姓名是: #{file_again}")

使用方法:

ruby QKPdf.rb

输出:

bogon:11 tal$ ruby QKPdf.rb
请输入您的姓名:

然后在命令行输入文字:“刘明洋”,回车,脚本会接收输入的文字,并打印出来:

传进来的参数是: 刘明洋

7、puts和print区别

两者都是打印输出,区别在于:
puts输出完之后,光标自动换行。而print输出完之后,光标不换行。