·定义方法
def **_**(parameter)
name= "id is"+parameter
return name
end
·变量
局部变量、方法参数和方法名称 以消协字母或下划线开始
类名称、模块名称和常量 以一个大写字母开始
全局变量 $
实例变量 @
类变量 @@
·控制语句
if 条件
puts "***"
elsif 条件
puts "***"
else
puts "***"
end
while 条件
puts "***"
end
·注释#
·block理解:类似与回调函数
def call_block
puts "Start of method"
yield#回调函数的关键字
yield
puts "End of method"
end
call_block do #执行多个动作,用do-end
puts("In the block")
puts("Out of block")
end
Ruby中方法和块的关系就是一对协同例程,互相转换程序的控制执行权,当方法中遇到yield语句,就转到块里执行,块执行完毕后,将返回到方法体中,继续执行方法yield语句后面的代码。yield可以带参数到块中,块也是有返回值,返回到方法体中。
·Closure/Proc/Block
lambda
在给出的块中生成过程对象(Proc的实例)并返回它(等同于Proc.new)。
若没有给出块的话,将返回主调(caller)方法所指的块。若主调方法没有块时,将引发ArgumentError异常。
·call
def test_closure_or_not(closure_or_not)
puts
puts "before calling closure_or_not"
result = closure_or_not.call #方法名.call
puts "after calling closure_or_not"
puts "result from closure_or_not: #{result}"
"test_closure_or_not result"
end
puts "w/o return:" + test_closure_or_not(lambda{"from lambda"}) #使用内部函数lambda