所以你想开始使用 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 中用作标识符的关键字:
BEGIN
、END
、alias
、and
、begin
、break
、case
、[ X77X]、def
、defined
、do
、else
、elsif
、end
、[X162X ]、false
、for
、if
、in
、module
、next
、nil
、not
、or
、redo
、rescue
、retry
、return
、[ X349X]、super
、then
、true
、undef
、unless
、until
、[X440X ]、while
、yield
标识符和变量名
标识符和变量区分大小写,可以包含字母、十进制数字或 _ 字符。 它们不能以数字开头。 以大写字母开头的标识符是常量。
评论
您使用 # 表示评论。 大多数时候 # 也用于多行注释:
# This is a comment # Comment on # multiple # lines
多行注释也可以像这样创建:
=begin Comment on multiple lines =end
数据类型
字符串
Strings 在 Ruby 中也是对象,您可以执行以下操作:
"Alligator".size
这将输出:
=> 9
有 吨有用的方法 可用于 Ruby 中的字符串。 这里有一些可以派上用场的,其中大部分是不言自明的:
capitalize
、chars
、chomp
、chop
、chr
、count
、delete
、[ X77X]、end_width?
、eql?
、include?
、index
、replace
、reverse
、[X162X ]、strip
、swapcase
注意以 ? 结尾的方法 在 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?
、collect
、compact
、concat
、count
、delete
、drop
、[ X77X]、empty?
、eql?
、first
、include?
、index
、last
、[X162X ]、pop
、push
、reverse
、shift
、shuffle
、slice
、sort
、unshift
哈希
Hashes 就像字典。 它们不是索引其中的所有对象,而是与一个唯一键相关联,该键可以是任何类型的对象:
accused = { "who" => "You", "with_what" => "club" }
使用符号作为哈希键是常见的做法:
accused = { :who => "You", :with_what => "club" }
如果您仅将符号用作键,则可以使用以下简洁语法:
accused = { who: "You", with_what: "club" }
同样,哈希有许多有用的方法,这里有一些:
any?
、clear
、compare_by_identity
、default
、delete
、each
、each_key
、[ X77X]、each_value
、empty?
、eql?
、fetch
、has_key?
、has_value?
、[X162X ]、invert
、keep_if
、length
、shift
、size
符号
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