红袖添香,绝代妖娆,Ruby语言基础入门教程之Ruby3基础语法,第一次亲密接触EP01

简介: 书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。Ruby是一门在面向对象层面无所不用其极的解释型编程语言。我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。

书接上回,前一篇我们在全平台构建好了Ruby3的开发环境,现在,可以和Ruby3第一次亲密接触了。

Ruby是一门在面向对象层面无所不用其极的解释型编程语言。

我们可以把编写Ruby代码看作是一场行为上的艺术,编码就像跳舞一样,Ruby的每一步都很优雅,几乎没有一步是多余的。

第一行代码

进入系统的irb终端,输入第一行代码:

irb(main):001:0> puts "你好 Ruby!"  
你好 Ruby!  
=> nil

puts关键字是 Ruby 语言里用来打印的基本命令。第三行输出的nil 是什么?其实是puts命令的返回值, puts命令永远返回 nil,nil也是 Ruby 的空值,可以理解为Python中的None关键字。

Ruby同时提供了一个更简单的输出对象内容的方法:p

irb(main):002:0> p "你好 Ruby!"  
"你好 Ruby!"  
=> "你好 Ruby!"

puts方法输出数值 1 和字符串 "1"时,结果都只是单纯的 1。这样一来,我们就无法判断输出的结果到底是属于哪个对象。此种种情况下,p方法可以很好地解决这个问题。使用 p方法时,数值结果和字符串结果会以不同的形式输出:

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方法:

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首先要查找文本中要替换的字符,即带反斜杠的字符,用二进制替换。

irb(main):011:0> puts "你好 \n Ruby"  
你好   
 Ruby  
=> nil  
irb(main):012:0> puts '你好 \n Ruby'  
你好 \n Ruby  
=> nil

也可以理解为单引号是原样输出,而双引号则会替换为变量实体。

空白字符

和Python不同的是,空格和制表符之类的空格字符通常在Ruby3代码中会被忽略,除非它们出现在字符串中。但是,有时它们被用来解释模棱两可的陈述。启用-w选项时,此类解释会产生警告:

irb(main):013:0> puts    '你好 \n Ruby',    "前面好多空格"  
你好 \n Ruby  
前面好多空格  
=> nil

长字符串

Ruby也可以多行构建字符串。在 << 之后,可以指定字符串或标识符以终止字符串文字,并且当前行之后直至终止符的所有行都是字符串的值。如果用引号引起来,则引号的类型确定面向行的字符串文字的类型。注意,<< 和终止符之间不能有空格:

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作为程序结束时执行的逻辑:

puts "这是主线程Ruby3程序"  
  
END {  
   puts "Ruby3程序结束"  
}  
  
BEGIN {  
   puts "Ruby3程序开始"  
}

代码注释

注释可以在Ruby解释器中隐藏一行,一行的一部分或几行,作为不执行的代码,可以在行的开头使用井号(#)

irb(main):069:0* # 我是一个注释。忽略我。  
irb(main):070:0*

注释也可以在语句或表达式后的同一行上:

irb(main):070:0> name = "v3u.cn" # 这又是一个注释  
=> "v3u.cn"  
irb(main):071:0>

也可以通过使用=begin/=end从Ruby3解释器中隐藏了多行代码:

=begin  
这是一条注释。  
这也是注释。  
这也是注释。  
这还是注释。  
=end

编辑器(Vscode)

如果厌倦了在irb命令行中编写Ruby代码,我们也可以在编辑器中随心所欲地编写,这里推荐微软开源的Vscode编辑器,下载地址:https://code.visualstudio.com/

安装好之后,只需要安装ruby插件即可:

随后编写test.rb文件:

puts "你好,Vscode"

右键运行Ruby脚本:

简单方便,开箱可用。

结语

Ruby可以以最少的代码量解决问题,又不失可读性,优雅而又不乏实用,如果你有梦想,就一定看得到这颗红宝石和梦中的一样动人妖娆。

相关文章
|
算法 测试技术 API
如何用Ruby语言提高代码的可读性和可维护性
在软件开发过程中,代码的可读性和可维护性是非常重要的因素。一旦代码变得难以理解和修改,就会导致开发速度变慢、bug增多以及团队合作效率下降。在本篇博客中,我们将探讨一些使用Ruby编程语言的技巧和最佳实践,以提高代码的可读性和可维护性。
89 1
|
XML 前端开发 安全
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
构建自己的MVC框架(Ruby语言实现)-- 2. 创建ApplicationController
|
5月前
|
文字识别 API 开发工具
印刷文字识别产品使用合集之SDK支持ruby语言吗
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
3月前
|
自然语言处理 Ruby
Ruby语言揭秘:如何轻松驾驭自然语言处理?
【8月更文挑战第31天】本文介绍了如何利用Ruby进行自然语言处理(NLP),包括安装`treat`库及其实现文本分词、词性标注和命名实体识别等基础任务的方法。通过示例代码,展示了Ruby在NLP领域的强大功能与灵活性,为初学者提供了一个友好且实用的入门指南。在信息爆炸的今天,掌握Ruby进行NLP处理的技能显得尤为重要。
30 0
|
3月前
|
开发者 Ruby
Ruby正则表达式的奥秘:如何用简单的语法构建强大的文本匹配与处理工具?
【8月更文挑战第31天】正则表达式是文本匹配的强大工具,通过简单模式即可实现复杂文本处理。作为动态、面向对象的语言,Ruby提供了全面的正则表达式支持,涵盖创建、匹配、替换及分割等功能。本文通过示例代码介绍如何在Ruby中使用正则表达式进行文本匹配,并分享了编写正则表达式的最佳实践,帮助开发者提升文本处理效率与准确性,更好地利用这一工具构建高效系统。
32 0
|
3月前
|
测试技术 开发者 Ruby
Ruby领域特定语言(DSL)的神秘力量:如何让你的代码飞起来?
【8月更文挑战第31天】在软件开发领域,Ruby以简洁的语法和强大的表达能力著称,但面对复杂业务逻辑时,代码可能变得冗长难维护。此时,领域特定语言(DSL)成为解决问题的有效途径。DSL专为特定领域设计,使代码更贴近业务逻辑,提高可读性和可维护性。本文通过示例展示了如何在Ruby中开发DSL,包括使用解析器和宏功能创建一个简单的Web应用结构描述语言,并提出了定义清晰语法、避免滥用DSL等最佳实践,强调了测试与文档的重要性。
69 0
|
4月前
|
监控 网络安全 持续交付
公司电脑管理软件结合 Ruby 语言的实践探索
在数字化办公时代, Ruby 语言以简洁灵活的特点, 成为公司电脑管理软件开发的新选择。通过示例代码展示了 Ruby 在获取系统信息、监控内存使用及远程管理方面的应用。Ruby 的灵活性与丰富库资源, 大大提升了管理效率与准确性, 为企业数字化管理带来新可能。
38 3
|
存储 前端开发 JavaScript
前端学 Ruby:熟悉 Ruby 语法
前端学 Ruby:熟悉 Ruby 语法
43 0
|
6月前
|
Ruby
|
6月前
|
Ruby