Ruby基础代码经验分享
创始人
2024-06-16 14:50:31
0

Ruby语言的学习和其他编程语言一样,首先要从基础开始。在这里我们为大家介绍了一下Ruby基础代码中的BEGIN和END的编写方式。#t#

Ruby基础代码之BEGIN 块

BEGIN 块中的代码在所有代码执行之前执行,Ruby 允许设置多个 BEGIN 块并按出现的顺序执行块中的代码。C# 程序员注意下面的代码

  1. BEGIN  
  2. {  
  3. print "OnInit(object sender, 
    EventArgs args)\n"  
  4. }  
  5. BEGIN  
  6. {  
  7. print "OnLoad(object sender, 
    EventArgs args)\n"  
  8. }  
  9. print "Running" 

上面的代码看上去很美吧,可惜的是上面的代码段会出现 parse error,正确的代码应该是

  1. BEGIN{  
  2. print "OnInit(object sender, 
    EventArgs args)\n"  
  3. }  
  4. BEGIN{  
  5. print "OnLoad(object sender,
     EventArgs args)\n"  
  6. }  
  7. print "Running" 

 

正如上面的代码段所呈现的,只有当起始大括号和 BEGIN 标识符位于同一行时块内的代码才能得到正确的执行。同时 BEGIN 块也不受任何控制结构的影响,因为只要出现 BEGIN 块就会得到执行并且只执行一次。

  1. i = 0 
  2. while i < 10 
  3. # 虽然处理循环结构中,但 BEGIN 
    块内的代码仍然只执行一次  
  4. BEGIN{  
  5. print "OnInit(object sender, 
    EventArgs args)\n"  
  6. }  
  7. i += 1  
  8. end  
  9. if false  
  10. # BEGIN 完全不受 if 的影响,
    只要出现 BEGIN 块就会得到执行  
  11. BEGIN{  
  12. print "OnLoad(object sender,
     EventArgs args)\n"  
  13. }  
  14. end  
  15. print "Running" 

 

基于只要现出 BEGIN 就会得到执行和 BEGIN 在所有代码执行之前执行的原则,即使 BEGIN 块前出现了代码,该代码仍然会等待 BEGIN 块执行之后再执行。比如下面的代码段输出结果仍然是 OnInit - OnLoad - Running。

  1. print "OnLoad(object sender, 
    EventArgs args)\n"  
  2. BEGIN{  
  3. print "OnInit(object sender,
     EventArgs args)\n"  
  4. }  
  5. print "Running" 

 

Ruby基础代码之END 块

END 块与 BEGIN 块相反,在所有代码执行之后执行,多个 END 块时最先出现的 END 块最后执行。除此之外,END 块虽然不受 while 的影响,但是可能通过 if 来控制 END 块的执行与否。比如下面代码的输出结果就是 Start - Load - Unload。

  1. if false  
  2. END{  
  3. # 永远不输出  
  4. print "Init"  
  5. }  
  6. end  
  7. END{  
  8. # 最后输出  
  9. print "Unload\n"  
  10. }  
  11. END{  
  12. # 先于 Unload 输出  
  13. print "Load\n"  
  14. }  
  15. # 最先输出  
  16. print "Start\n" 

以上就是我们为大家介绍的Ruby基础代码讲解。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
Windows恶意软件20年“... 在Windows的早期年代,病毒游走于系统之间,偶尔删除文件(但被删除的文件几乎都是可恢复的),并弹...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...