Ruby语法入门

来自菜鸟教程
机器人讨论 | 贡献2022年5月23日 (一) 12:30的版本 (Update)
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至:导航、​搜索

所以你想开始使用 Ruby on Rails,但你完全没有使用 Ruby 的经验? 或者也许你需要在几个月后用 Ruby 编写任何东西后复习一下?

这篇文章为你提供了 Ruby Minimum Viable Syntax,这样你就可以开始了。

红宝石

Ruby 是一种动态的面向对象的编程语言(Ruby 中的一切都是对象)。 它是由 Yukihiro Matsumoto 在 90 年代中期创建的。 当 Ruby on Rails 开始成为构建 Web 应用程序的流行小子时,它的流行度呈指数增长。

Ruby 的重点是生产力和程序员的乐趣。 换句话说,它专注于减少屁股的痛苦。

安装 Ruby

如果您使用的是 Mac 或 Linux,则很有可能您已经安装了 Ruby 版本。 但是,在撰写本文时,它可能不是最新版本 v2.2.3。

要安装最新版本,最常用的方法是使用 RVM (Ruby Version Manager)

以下是如何从终端安装 RVM,然后从终端安装 Ruby 和 Rails:

$ gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
$ \curl -sSL https://get.rvm.io | bash -s stable --ryby --rails

运行一些代码

一旦你在你的机器上安装了 Ruby,就很容易开始使用 irb(交互式 Ruby)来运行和运行一些代码。 只需在您的终端中输入 irb,您就会得到一个类似于 irb(main):001:0> 的提示,您就可以从那里运行一些 Ruby 代码。

关于一般语法的几句话

Ruby 中每行的末尾没有分号,只需在自己的行中开始每个新表达式。 您可以使用行尾的 \ 字符在多行上继续一个长表达式。 缩进不是强制性的,但为了可读性和可维护性,通常使用 2 个空格缩进。

Ruby 文件的扩展名为 .rb,以下是如何在 Ruby 中在屏幕上打印内容:

puts "Hello, Alligator!"

或者,使用 print 命令,它与 puts 不同之处在于它不会在输出中添加新行:

print "Hello, Alligator!"

保留关键字

以下是不能在 Ruby 中用作标识符的关键字:

BEGINENDaliasandbeginbreakcase、[ X77X]、defdefineddoelseelsifend、[X162X ]、falseforifinmodulenextnilnotorredorescueretryreturn、[ X349X]、superthentrueundefunlessuntil、[X440X ]、whileyield

标识符和变量名

标识符和变量区分大小写,可以包含字母、十进制数字或 _ 字符。 它们不能以数字开头。 以大写字母开头的标识符是常量。

评论

您使用 # 表示评论。 大多数时候 # 也用于多行注释:

# This is a comment

# Comment on
# multiple
# lines

多行注释也可以像这样创建:

=begin
Comment on
multiple
lines
=end

数据类型

字符串

Strings 在 Ruby 中也是对象,您可以执行以下操作:

"Alligator".size

这将输出:

=> 9

吨有用的方法 可用于 Ruby 中的字符串。 这里有一些可以派上用场的,其中大部分是不言自明的:

capitalizecharschompchopchrcountdelete、[ X77X]、end_width?eql?include?indexreplacereverse、[X162X ]、stripswapcase

注意以 ? 结尾的方法 在 Ruby 中,当方法名返回 true 或 false 时,通常使用问号来结束它们。

整数

我们不会在这里讨论每一种 Ruby 数据类型,但是整数给出了另一个很好的例子,它显示了在 Ruby 中一切都是对象的程度。 例如,您可以像这样在整数上调用方法:

666.odd?

这将返回 false,因为 666 是偶数。

数组

与许多其他语言一样,Ruby 中的 数组是对象的索引集合。 不同类型的对象可以在同一个数组中使用。 索引是从零开始的,这意味着数组中的第一件事在位置 0。 如果您正在寻找数组中的第三个对象,您将使用索引 2。

以下是声明数组的两种有效方法:

my_array = ["Something", "very", "boring"]

# And this is equivalent:
my_array = Array.new(["Something", "very", "boring"])

数组也有一些非常有用的方法,这里有一些:

any?collectcompactconcatcountdeletedrop、[ X77X]、empty?eql?firstinclude?indexlast、[X162X ]、poppushreverseshiftshuffleslicesortunshift

哈希

Hashes 就像字典。 它们不是索引其中的所有对象,而是与一个唯一键相关联,该键可以是任何类型的对象:

accused = { "who" => "You", "with_what" => "club" }

使用符号作为哈希键是常见的做法:

accused = { :who => "You", :with_what => "club" }

如果您仅将符号用作键,则可以使用以下简洁语法:

accused = { who: "You", with_what: "club" }

同样,哈希有许多有用的方法,这里有一些:

any?clearcompare_by_identitydefaultdeleteeacheach_key、[ X77X]、each_valueempty?eql?fetchhas_key?has_value?、[X162X ]、invertkeep_iflengthshiftsize

符号

Ruby 中的符号有点奇怪。 它们以 : 字符开头,在 Ruby 或 Rails 项目中很常见。 它们类似于字符串,但不可变。 一旦它们被首次创建,它们就不能在程序的整个执行过程中改变。 这使得它们可以更快地访问和处理,这反过来又使符号成为例如哈希中的键的理想选择。

条件语句

如果...否则...否则

Ruby 提供了一些有趣的方法来构造条件语句。 这是传统的 if 语句:

sammy = "the shark"
if sammy.length > 10
  puts "Not quite"
elseif sammy.length === 9
  puts "I think we have a winner"
else
  puts "Getting cold"
end

注意这里的关键字 elsif,而不是 elseif 或 else if,elsif! 使用简单的 if 语句,您可以像这样在一行中构造它们:

puts "Yes" if sammy.length === 9

除非语句

您可以通过使用除非语句应用反向逻辑:

letters = ["A", "l", "l"]
unless letters[1] === "l"
  puts "This won't print"
end

在上面的示例中,条件的主体不会执行,因为条件的计算结果为真。 除非语句通常比使用 if not 逻辑更直观,它们更接近自然语言。

这是另一个示例,使用单行语法:

puts "Ok" unless letters.length > 3

案例陈述

构造条件语句的另一种方法是使用 case 语句。 它们有助于否则非常复杂的 if 语句:

moon_to_earth = 238900
case
when moon_to_earth < 200000
  puts "Not quite back home"
when moon_to_earth < 250000
  puts "Went too far"
when moon_to_earth === 238900
  puts "Spot on!"
else
  puts "Off the track again"
end

或者,您可以使用您正在评估的变量开始 case 语句。 请注意这里如何使用各种语句来评估:

moon_to_earth = 238900
case moon_to_earth
when 1..200000
  puts "Not quite back home"
when String
  puts "We're looking for an integer"
when 238900
  puts "Spot on!"
else
  puts "Off the track again"
end