在学习Ruby时,我注意到在所有示例中都没有分号。我知道只要每个陈述都在自己的行上,这就完全没问题了。但我想知道的是,可以你在Ruby中使用分号吗?
答案 0 :(得分:93)
是
Ruby不要求我们使用任何字符来分隔命令,除非我们想在一行上将多个语句链接在一起。在这种情况下,分号(;)用作分隔符。
来源:http://articles.sitepoint.com/article/learn-ruby-on-rails/2
答案 1 :(得分:29)
作为旁注,在(j)irb会话中使用分号是有用的,以避免打印出一个可笑的长表达值,例如
irb[0]> x = (1..1000000000).to_a
[printout out the whole array]
VS
irb[0]> x = (1..100000000).to_a; nil
特别适合您的MyBigORMObject.find_all调用。
答案 2 :(得分:5)
irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0
您甚至可以在单行循环中运行由分号分隔的多个命令
irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45
答案 3 :(得分:3)
我发现分号的唯一情况是在为attr_reader声明别名方法时有用。
请考虑以下代码:
attr_reader :property1_enabled
attr_reader :property2_enabled
attr_reader :property3_enabled
alias_method :property1_enabled?, :property1_enabled
alias_method :property2_enabled?, :property2_enabled
alias_method :property3_enabled?, :property3_enabled
通过使用分号,我们可以减少3行:
attr_reader :property1_enabled; alias_method :property1_enabled?, :property1_enabled
attr_reader :property2_enabled; alias_method :property2_enabled?, :property2_enabled
attr_reader :property3_enabled; alias_method :property3_enabled?, :property3_enabled
对我来说,这并没有真正消除可读性。
答案 4 :(得分:2)
是的,分号可以用作Ruby中的语句分隔符。
虽然我的典型样式(以及我看到的大多数代码)在每一行上都放了一行代码,但使用;
是非常必要的。
答案 5 :(得分:0)
使用分号来保留块语法可能很有趣,如下例所示:
<!DOCTYPE html>
<html>
<head>
<link rel= "stylesheet" type="text/css" href="dogstyle.css">
<meta charset="UTF-8">
<title>Sadness be gone!</title>
</head>
<body>
<div id="headers">
<h1> Having a bad day?</h1>
<h1> Not anymore! </h1>
</div>
<h3 id="subheader">Happiness and fluffyness is just a click away</h3>
<div id="imageContainer"></div>
<button id="randomDog" class="button">Click away!</button>
<script src="js/experiment.js"></script>
</body>
您维护一行代码。