流程控制结构
if表达式 then代码块 [elsif表达式 then代码块]..[else代码块]end
case表达式when表达式..;代码块...[else代码块]end
while表达式;代码块end
for变量..in表达式;代码块end
unless ~ end
a = 7 # 为变量 a 赋值代入 7。
unless a >= 10 # 如果 a 不为 10 以上的话,
print "small" # 显示 small。
end # 分歧结束。
temperature = 76
if temperature > 85
puts 'Too hot'
elsif temperature < 65
puts 'Too cold'
else
puts 'OK'
end
case command
when 'Go'
puts 'Go'
when 'Wait'
puts 'Wait'
end
三重操作符:?: resutl = codition?true_value:false_value
while($_ != 'Q')
puts 'no quit'
end
until($_ == 'q')
puts 'quit'
end
for value in 1..10
puts 'the iteration ' + value.to_s
end
break
中断循环(相当于C语言的break)。
next
开始下一次循环(相当于C语言的continue)。
redo
重新执行块的第一行。
retry
重新开始一个循环或者迭代器
1.upto(10) do |number|
puts number.to_s
retry if $_ == 'r'
end
ruby迭代器
upto,downto,step,each,times
grades[] = {88, 99, 73, 56, 87, 64}
0.upto(grades.length-1) do |loop_index|
sum += grades[loop_index]
end
five=5
five.tims do
puts 'echo'
end
grades.each do |grade|
sum += grade
end
ruby创建和调用方法
def hello
return "您好"
end
def hello
return "晚安"
end
p hello # => "晚安"
在 Ruby 中,函数名称重复的话不会出现错误。这种情况下系统会认定后面定义的函数有效,而先前的定义就无效了。
传递参数:
def greeting(message)
puts message
end
可变个数的参数
最后一个参数加上一个*,相当于一个数组
def putter(first_word, *others)
puts first_word + " " + others.join(" ")
end
返回值:
def adder
return 'just a test'
end
默认可以没有return,直接 'just a test',也可以返回
返回多个值:
def greeting
return "First", "Second"
end
word_one, word_two = greeting
array = [1, 2, 3, 4]
def returner
return array
end
使用块:
一个块可以是一段代码,可以象传递一个参数一样将其传递给一个方法
def greeting
yield
end
greeting { puts "Hello "}
yield调用这个块的代码,执行该块中的代码。
def greeting
yield "hello", "here"
end
greeting {|word_one, word_two| puts word_one + " " + word_two }
结果同上个语句,可以传递参数给块。