我有一个语言的背景,使用{}说这些是“语句块”,但我正在学习ruby并且真的很困惑它是如何在那里完成的。
让我们说在C我有
if ( condition )
{
statement1;
statement2;
}
else if (condition)
{
statement1;
statement2;
// nested if
if (condition)
{
dosomethinghere;
}
}
else
{
statement1;
statement2;
}
我如何将此代码放入ruby中?并且还提到如何理解ruby中“{}”的同义词,谢谢。
答案 0 :(得分:8)
好的,回答你的第一个问题:
if ( condition )
statement1
statement2
elsif (condition)
statement1
statement2
// nested if
if (condition)
dosomethinghere
end
else
statement1
statement2
end
if
语句的语法规则是:
if expr [then]
expr...
[elsif expr [then]
expr...]...
[else
expr...]
end
[]
之间的所有内容都是可选的
但是,在其他方面,您还可以创建并传递代码块,查看this帖子以阅读有关此主题的更多信息。
答案 1 :(得分:3)
if的ruby语法是:
如果有条件 身体 其他 交替的身体 端
或者
如果条件然后身体其他替代身体结束
while循环除外,do
代替then
。
{
和}
用于传递匿名函数(在ruby中混淆地称为“块”)作为方法的参数。
答案 2 :(得分:1)
我建议你找一本体面的书并坐下来阅读前几章,这应该包括你在这里提出的所有内容以及更多内容。我建议http://oreilly.com/catalog/9780596529864虽然如果你想要快速完成任务,http://www.troubleshooters.com/codecorn/ruby/basictutorial.htm是一个很好的简短介绍,可以帮助你入门。
答案 3 :(得分:0)
在Ruby中,if
之后隐含了左括号。要关闭块,请使用end
而不是闭括号。唯一的区别是您使用elsif (condition)
而不是else if (condition)
。
答案 4 :(得分:0)
如果您正在考虑“如何在Ruby中创建新的变量范围”?即:
{
var myvar = 1;
}
myvar = 2; // compile error because myvar isn't in this scope!
我不确定你会怎么做。
答案 5 :(得分:0)
尝试运行以下内容:
def example(x,y)
puts "X:#{x},Y:#{y}"
if ( x == 0 ) then
puts "Its true"
elsif (x == 1)
puts "Its not true"
puts "it certainly isn't"
if (y == 0) then
puts "i'm the nested if"
end
else
puts "i made it to the default case"
puts "freedom"
end
puts
end
example(0,0)
example(1,0)
example(1,1)
example(2,2)
答案 6 :(得分:-1)
如果您想要一个范围,您可以定义自己的scope
方法:
def scope
yield
end
# use like this
scope {
x = 5
puts x #=> 5
}
x #=> undefined local variable
编辑:为了更好地处理Ruby 1.9中的“范围”,请参阅:http://banisterfiend.wordpress.com/2010/01/07/controlling-object-scope-in-ruby-1-9/