rubyonrails:Ruby入门介绍

、思路方法
Ruby 思路方法定义允许为参数设置默认值不过在带有默认值参数后面不能出现不带有默认值参数(允许 * 和 &)也就是说下面思路方法定义是不被允许解释时会出现 parse error 还有点和 C# 区别思路方法定义不能出现在思路方法后面
# parse error def Display(args1="proshea", args2) end # 允许 def Display(args1="proshea", *args2) end # 允许 def Display(args1="proshea", &args) end Show # 出现在 Show 的后是 def Show end



Ruby 也支持 C# params 这样参数功能 只是 Ruby 用 * 标识罢了


def Display(*args) pr %Q~#{args.join("-")}~ end # proshea-32-WinForm Display("proshea", 32, "WinForm")



同样 Ruby 也有类似于 C# delegate 应用只是更简单直接用 & 来表示并且 Ruby 用个称为 yield 关键字来知会解释器执行传入代码块或者说 Proc object(过程对象?)

1def Display(&block) 2 block_given? 3 yield(block) 4 5 pr %Q~没有传入过程对象~ 6 end 7end 8 9def Show 10 pr %Q~Show 思路方法~ 11end 12 13# 没有传入过程对象 14Display 15# 在 Display 内部 Show 思路方法 16# 注意起始大括号仍然只能和思路方法名在同行 17Display{ 18 Show 19}



block_given? 是被定义在内部模块 Kernel 当中思路方法用以表明是否传入了 Proc object的后Ruby 用 yield 通知解释器执行传入 Proc过程对象也可以带有参数区别于普通思路方法是过程对象参数是位于组 | | 的中可以使用 Proc object call 思路方法来带参数过程对象

1 Employee 2 def initialize(username, age, &block) 3 @username, @age, @block = username, age, block 4 end 5 6 def Display(txt) 7 # 虽然 @block 是个例子变量但在此处定要加上大括号 8 pr "#{@block.call(txt)}: #@username-#@age" 9 end 10end 11 12emp = Employee.("proshea", 32){ 13 |txt| 14 txt 15} 16emp.Display("context")



1
Tags:  ruby是什么 ruby教程 ruby是什么意思 rubyonrails

延伸阅读

最新评论

发表评论