`
量产型人型自走炮
  • 浏览: 8486 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论
阅读更多
恩这个我知道
举个例子Enumerable#find
def find
 for i in 0...size
  value = self[i] 
  return value if yield(value)#我怎么确定这个return具体跳到哪里
 end
return nil 

分享到:
评论
5 楼 night_stalker 2009-04-15  
量产型人型自走炮 写道

.假设这里有N层block 最终是跳出所有block作为调用函数的返回值吗?

嗯,就是跳出 n 层。所以少用 return 为妙...
4 楼 量产型人型自走炮 2009-04-15  
恩..我知道 实际上这个是programming ruby上的一个例子 并不是真的find的实现(今天才开始看ruby的TAT)
引用

它里面的return具有非本地跳转的语义,所以就这个例子肯定是返回到find的调用者处。

引用

hehe,return 写在哪个函数定义里,就是跳出哪个函数。

那block内的return是在函数外定义的怎么说....假设这里有N层block 最终是跳出所有block作为调用函数的返回值吗?
3 楼 night_stalker 2009-04-15  
这个 return 写在 find 的定义里,所以是跳出 find
2 楼 RednaxelaFX 2009-04-15  
咦,原来Enumerable#find是这样定义的么?我还以为是类似:
module Enumerable
  def find(ifnone = nil)
    self.each do |elem|
      return elem if yield(elem)
    end
    ifnone
  end
end

嘛,实际上在MRI里这方法是C代码来的就是了。

针对你上面的代码,首先你要理解for在Ruby里是对each方法的语法糖,于是for后面跟的就是一个普通的block。然后换到我的版本的代码来说,do...end之间是一个普通的block,在Ruby里这叫一个iterator,它里面的return具有非本地跳转的语义,所以就这个例子肯定是返回到find的调用者处。

等我想个别的例子……
1 楼 night_stalker 2009-04-15  
hehe,return 写在哪个函数定义里,就是跳出哪个函数。

相关推荐

    如何在QQ上使用美图聊聊?.docx

    在较早的版本中,你可能会直接找到“图片”选项,但在2013年4.2.0版及以上的新版QQ中,必须通过“拍照”功能才能触发美图聊聊。 3. **选择美图聊聊**: 在选择拍照后,系统会弹出一个窗口,此时你需要选择“美图聊...

    安卓开发-百度推聊应用.zip.zip

    2. **即时通讯技术**:百度推聊应用可能使用了自定义的消息协议或者基于XMPP、MQTT等协议进行实时通信。 3. **数据存储**:可能使用SQLite数据库存储用户信息、聊天记录等数据,或者利用sharedPreferences存储轻量...

    百度推聊应用.zip

    【标题】"百度推聊应用.zip" 是一个包含Android源码的学习资源,它可能是百度公司某款聊天应用的源代码示例。通过分析这个压缩包,我们可以深入理解Android应用程序的开发流程,掌握核心组件和功能的实现。 【描述...

    Android应用源码之百度推聊应用.zip

    推聊应用可能使用SQLite来保存用户信息、聊天记录等。研究数据库相关的代码,可以学习到如何创建表、插入/查询数据,以及如何使用ContentProvider进行数据共享。 5. **网络通信**:为了实现实时聊天,应用可能采用...

    安卓Andriod源码——百度推聊应用.zip

    这意味着我们可以期待在这个压缩包中找到用Java或Kotlin编写的Android工程文件,包括Activity、Service、BroadcastReceiver等组件,以及与百度Push SDK相关的配置和接口调用。 【标签】:“安卓”、“android”、...

    应用源码之百度推聊应用.zip

    《深入剖析:百度推聊应用源码学习》 在Android开发领域,源码学习是提升技术能力的重要途径。本资源“应用源码之百度推聊应用.zip”为我们提供了一个宝贵的实践平台,它涵盖了JAVA ANDROID的相关知识,适合作为...

    Android高级应用源码-百度推聊应用.zip

    【标题】"Android高级应用源码-百度推聊应用.zip" 涉及的主要知识点是Android应用程序开发,尤其是使用百度推送服务(Baidu Push SDK)进行实时通讯的应用实践。这个压缩包包含的是一个完整的Android项目源码,可以...

    安卓Android源码——百度推聊应用.zip

    【压缩包子文件的文件名称】:“Baidu-Push-SDK-Android-L2-3.2.0”是百度推送服务的SDK版本号,表示这个压缩包内包含了特定版本(L2,可能是某个特定功能的代号,3.2.0是具体的版本号)的Android版百度Push SDK。...

    QQ轻聊版7.3正式版发布.docx

    6. **与普通版共存**:轻聊版与普通版QQ可以同时存在于同一台电脑上,用户可以根据不同场景切换使用,满足多样化的使用需求。 7. **好友列表和聊天界面**:好友列表清晰明了,每个联系人的信息简洁直观;聊天界面则...

    QQ轻聊版好不好用.docx

    这意味着用户在使用轻聊版进行聊天时,不会遇到恼人的弹窗广告,不会在聊天窗口中看到任何图文或文字广告,从而保证了聊天过程的纯粹性和专注度。对于经常被广告打扰的用户来说,这一点无疑具有极大的吸引力。 其次...

    【JavaScript源代码】Vue在H5 项目中使用融云进行实时个人单聊通讯.docx

    在H5项目中集成实时个人单聊通讯功能,可以借助第三方服务如融云(RongCloud)。融云提供了一套API和服务,使得开发者能够方便地实现实时通信功能,包括聊天、群组聊天等。以下是将融云集成到Vue.js项目中的详细步骤...

    百度推聊应用.zip项目安卓应用源码下载

    在百度推聊应用中,你将看到如何使用这些组件来构建一个完整的应用,例如,Activity用于用户界面交互,Service处理后台通讯任务,BroadcastReceiver接收系统或自定义广播事件。 2. **网络通信**:即时通讯的核心是...

    ewebeditor v5.5 for ASP 戒聊修改版.rar

    考虑到“戒聊修改版”的特性,开发者在使用时还需要关注安全问题,如防止XSS攻击,以及优化性能,如减少不必要的网络请求,优化图片上传和处理流程,确保编辑器在保持功能的同时,也能高效稳定地运行。 综上所述,...

    QQ热聊怎么用.docx

    以下是关于如何使用QQ热聊的详细步骤和相关知识点: 1. **开启热聊功能**: - 首先,确保您的手机已经安装了最新版本的QQ应用程序,并且已经登录了您的QQ账号。 - 在QQ主界面,通常位于底部的导航栏,找到并点击...

    qq热聊怎么创建.docx

    请注意,虽然系统可能会提示在WiFi环境下使用,但实际在移动数据下也能创建和参与热聊。 4. **创建热聊** 要创建自己的热聊,你需要点击“创建热聊”按钮(如果该功能可见)。按照提示设置热聊的主题、简介,还...

    百度推聊.zip

    《深入剖析Android源码:以“百度推聊”为例》 在移动开发领域,Android操作系统以其开源、自由的特性,吸引了无数开发者投身其中。对于有志于提升Android开发技能的程序员来说,理解并掌握Android源码是至关重要的...

    ewebeditor v5.5 for ASP 戒聊修改版.RAR

    《ewebeditor v5.5 for ASP 戒聊修改版》是一款专为ASP平台设计的网页编辑器,它主要用于在Web应用中提供便捷的富文本编辑功能。此修改版是针对ewebeditor v5.5版本进行了一定的优化和调整,以适应更严格的聊天环境...

    [AndrodeApe.com]百度推聊完整版.zip

    在“pushMessage完整版”这部分源码中,我们可以研究百度云推送是如何工作的。这涉及到Android后台服务的运用,用于监听并处理来自服务器的推送消息。服务组件在后台运行,即使用户退出应用,也能保持与服务器的连接...

Global site tag (gtag.js) - Google Analytics