书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。
Ruby是一门在面向对象层面无所不用其极的解释型编程语言。
我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。
第一行代码
进入系统的irb终端,输入第一行代码:
代码语言:javascript复制irb(main):001:0> puts "你好 Ruby!"
你好 Ruby!
=> nil
puts关键字是 Ruby 语言里用来打印的基本命令。第三行输出的nil 是什么?其实是puts命令的返回值, puts命令永远返回 nil,nil也是 Ruby 的空值,可以理解为Python中的None关键字。
Ruby同时提供了一个更简单的输出对象内容的方法:p
代码语言:javascript复制irb(main):002:0> p "你好 Ruby!"
"你好 Ruby!"
=> "你好 Ruby!"
puts方法输出数值 1 和字符串 "1"时,结果都只是单纯的 1。这样一来,我们就无法判断输出的结果到底是属于哪个对象。此种种情况下,p方法可以很好地解决这个问题。使用 p方法时,数值结果和字符串结果会以不同的形式输出:
代码语言:javascript复制irb(main):003:0> puts "1"
1
=> nil
irb(main):004:0> puts 1
1
=> nil
irb(main):005:0> p "1"
"1"
=> "1"
irb(main):006:0> p 1
1
=> 1
irb(main):007:0>
藉此,编码过程中我们可以通过p方法快速打印一个变量并且知晓其数据类型。
和Python一样,Ruby3也具有print方法:
代码语言:javascript复制irb(main):007:0> print "你好","Ruby"
你好Ruby=> nil
irb(main):008:0> puts "你好","Ruby"
你好
Ruby
=> nil
print方法与puts方法和p方法稍有区别,puts方法在输出结果的末尾一定会输出换行符,而print方法则不会,由此,我们可以将print方法理解为省略换行的puts方法,在打印多个变量时,添加换行的puts方法无疑更友好。
单引号和双引号
Ruby3的字符串对象生成有两种方式,字符串文字值加单引号或加双引号。 两种方式主要区别在于构造文字量时,对字符串的处理次数不同。 单引号时,Ruby对字符串值不做处理,里边是什么就是什么。 双引号时,Ruby首先要查找文本中要替换的字符,即带反斜杠的字符,用二进制替换。
代码语言:javascript复制irb(main):011:0> puts "你好 n Ruby"
你好
Ruby
=> nil
irb(main):012:0> puts '你好 n Ruby'
你好 n Ruby
=> nil
也可以理解为单引号是原样输出,而双引号则会替换为变量实体。
空白字符
和Python不同的是,空格和制表符之类的空格字符通常在Ruby3代码中会被忽略,除非它们出现在字符串中。但是,有时它们被用来解释模棱两可的陈述。启用-w选项时,此类解释会产生警告:
代码语言:javascript复制irb(main):013:0> puts '你好 n Ruby', "前面好多空格"
你好 n Ruby
前面好多空格
=> nil
长字符串
Ruby也可以多行构建字符串。在 << 之后,可以指定字符串或标识符以终止字符串文字,并且当前行之后直至终止符的所有行都是字符串的值。如果用引号引起来,则引号的类型确定面向行的字符串文字的类型。注意,<< 和终止符之间不能有空格:
代码语言:javascript复制irb(main):035:0" puts <<"EOF"
irb(main):036:0" 第一行
irb(main):037:0" 第二行
irb(main):038:0> EOF
第一行
第二行
=> nil
irb(main):039:0>
BEGIN和END语句
Ruby可以在程序中声明BEGIN作为初始执行的逻辑以及END作为程序结束时执行的逻辑:
代码语言:javascript复制puts "这是主线程Ruby3程序"
END {
puts "Ruby3程序结束"
}
BEGIN {
puts "Ruby3程序开始"
}
代码注释
注释可以在Ruby解释器中隐藏一行,一行的一部分或几行,作为不执行的代码,可以在行的开头使用井号(#)
代码语言:javascript复制irb(main):069:0* # 我是一个注释。忽略我。
irb(main):070:0*
注释也可以在语句或表达式后的同一行上:
代码语言:javascript复制irb(main):070:0> name = "v3u.cn" # 这又是一个注释
=> "v3u.cn"
irb(main):071:0>
也可以通过使用=begin/=end从Ruby3解释器中隐藏了多行代码:
代码语言:javascript复制=begin
这是一条注释。
这也是注释。
这也是注释。
这还是注释。
=end
编辑器(Vscode)
如果厌倦了在irb命令行中编写Ruby代码,我们也可以在编辑器中随心所欲地编写,这里推荐微软开源的Vscode编辑器,下载地址:https://code.visualstudio.com/
安装好之后,只需要安装ruby插件即可:
随后编写test.rb文件:
代码语言:javascript复制puts "你好,Vscode"
右键运行Ruby脚本:
简单方便,开箱可用。
结语
Ruby可以以最少的代码量解决问题,又不失可读性,优雅而又不乏实用,如果你有梦想,就一定看得到这颗红宝石和梦中的一样动人妖娆。