什么是 def ... else ... end 结构?

2024-01-14

我有这个代码:

def with_else
  puts 'we enter something funny'
  if true
    puts "yes"
    'return YES'
  end
  'return what?'
else
  puts 'no'
  'return else -> no'
end

puts with_else

输出是这样的:

we enter something funny
yes
no
return else -> no 

为什么我没有收到错误消息?什么是def/else/end mean?

http://rubyfiddle.com/riddles/8df07 http://rubyfiddle.com/riddles/8df07


这实际上是一个更大的语法结构的一部分:

def foo
  # method stuff
rescue
  # stuff if an exception is caught
else
  # stuff if no exception is caught
ensure
  # always run after rescue and else
end

但每个部分都是可选的!所以你可以省略rescue and ensure得到你的例子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是 def ... else ... end 结构? 的相关文章

  • Rails 4 - 如何链接到 PDF 文件(名称.PDF)?

    我正在生成 PDF 文件 我的链接如下所示 当我点击这个时 它会带我去 display invoice 123456789 这是一个 HTML 版本 在控制器中的操作如下 def display invoice if params invo
  • 红宝石边缘情况

    ruby 有一些边缘情况很难解释 因为解析会带来一些有趣的问题 我在这里列出其中两个 如果您知道更多 请添加到列表中 def foo 5 end this one works if tmp foo puts tmp to s end How
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • 如何从 Ruby 程序发送邮件?

    我想从 Ruby 应用程序发送电子邮件 核心语言中是否有调用来执行此操作 或者是否有我应该使用的库 最好的方法是什么 如果你不想使用行动邮递员 http wiki rubyonrails org rails pages ActionMail
  • Rails 控制台无法运行

    rbenv 红宝石版本 2 6 6 导轨版本 5 1 4 我正在较旧的代码库中工作 ruby 2 6 6 rails 5 4 1 这是我每天使用的代码库 我必须通过 rbenv 下载一个新的 ruby 版本作为单独的存储库 这样做在我的旧代
  • 使用 VCR 过滤敏感数据

    我正在使用 VCR gem 记录 http 交互并在将来重播它们 我想过滤掉 uri 请求中的实际密码值 以下是 uri 的示例 http services somesite com Services asmx Cabins Usernam
  • rvm gem 安装错误?

    我正在摆弄 ruby gems 和 rvm 它工作得很好 但现在当我尝试安装 gem 时出现错误 gem install Rails错误 同时 执行 gem Errno EACCES 权限被拒绝 Users da rvm gems ruby
  • 在 ruby​​ 中下载多个 FTP 文件,如 d*.txt

    我需要连接到 ftp 站点并下载一堆名为 D txt 的文件 最多 6 个 你能帮我用 Ruby 编写这个代码吗 下面的代码只是 ftp Net FTP new ftp server site ftp login user pwd ftp
  • ruby从1.8.7升级到1.9.2(使用Rails 3.1.1)后本地服务器错误

    我刚刚安装了rvm并使用rvm将ruby从1 8 7升级到1 9 2 我在我的应用程序上运行了捆绑安装 它重新安装了我的 gems 当我在本地运行 Rails 服务器并将浏览器导航到 localhost 3000 时 服务器日志中显示以下错
  • 如何从 Ruby 中的特定相对路径加载文件?

    我正在制作一颗供内部使用的宝石 在其中 我从另一个目录加载一些 YAML in
  • Ruby 是否有一个 Expect 等效 gem?

    Ruby 是否有一个 Expect 等效 gem 我尝试在 code google 和 ruby gems org 上搜索 但遗憾的是它没有出现 FYI Expect http en wikipedia org wiki Expect是一个
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • 带有 OAuth2 的 YouTube API v3:更新和删除失败并出现“权限不足”错误

    我在尝试着update and delete视频使用YouTube API v3 https developers google com youtube v3 docs videos with OAuth2 用于身份验证 https dev
  • 正则表达式的 o 修饰符是什么意思?

    Ruby 正则表达式有一些选项 例如i x m o i例如 意味着忽略大小写 什么是o选项是什么意思 在ri Regexp 它说o意味着执行 仅插值一次 但是当我这样做时 a one b a a two b不改变 它保持 one 我缺少什么
  • Watir Webdriver 加载 Chrome 扩展

    我正在尝试使用 Watir 加载 chrome 扩展 但遇到了问题 我发现这个相关问题 能够启动带有 watir webdriver 加载扩展的 chrome https stackoverflow com questions 125867
  • Ruby 中的 url_encode

    I read 的文档url encode http rdoc info stdlib erb 1 9 3 ERB Util 3Aurl encode 是否有一个表可以准确地告诉我哪个字符被编码为什么 使用url encode ERB s u
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 使用正则表达式搜索 Ruby 数组

    你好 我有一个小的 ruby 函数 它可以分割出一个 Ruby 数组 如下所示 def rearrange arr from to sidx arr index from eidx arr index to arr sidx arr sid
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi

随机推荐

  • 正则表达式用于识别 Guid 后跟数字

    我有一个可以识别 Guid 的正则表达式 string pattern 0 9a fA F 8 0 9a fA F 4 0 9a fA F 4 0 9a fA F 4 0 9a fA F 12 我有一个可以识别数字的正则表达式 string
  • 如何在 Xamarin.Forms 中获取客户端设备的 MAC 地址?

    在我的客户端服务器解决方案中 我需要运行 Xamarin Forms 应用程序的前端设备的 MAC 地址 目前我只有一个条目 用户应该在其中输入运行应用程序的设备的 MAC 地址 主界面 我已经搜索过这个主题 发现iOS和Android对于
  • 如何将 AngularJS 变量传递给 Javascript?

    我正在构建一个带有模态窗口的 AngularJS Web 应用程序 在模态窗口中 我可以显示 JQuery Flot 实时图表 类似于 http people iola dk olau flot examples realtime html
  • 获取两个 NSDate 之间的准确时差?

    有什么办法可以找出两者之间的准确差异NSDate 我已经找到了解决方案 但它们不够准确 我需要考虑夏令时 不同月份有不同天数等事实 诸如 60 60 24 等计算分钟 小时和天的简单计算不会将它们考虑在内 假设我需要计算出现在时间之间的差异
  • 使用字典的 Protobuf-net 对象引用反序列化:引用跟踪对象在反序列化期间更改了引用

    我在尝试使用 protobuf net 序列化 反序列化复杂对象图时遇到一些问题 我正在开发一个遗留应用程序 我们正在使用 Net Remoting 将 GUI 客户端连接到 C 服务 由于使用默认值的对象图的序列化大小 我们发现海外用户的
  • 上传1GB或以上的文件

    上传大于 1 GB 的文件的最佳方式是什么 当前情况 我们正在使用 Flask 来部署网络服务器 我们必须上传大于 1 GB 的文件 以前我们只上传了几MB的文件 所以 这不是问题 但现在对于大于 1 GB 的文件 旧的上传方法不再可行 服
  • Qt 中带有进度回调的 CopyFileEx

    有人能给我一个在 Qt 中使用 CopyFileEx 和进度回调的工作示例吗 我发现了一些划痕并尝试合并它但没有成功 我什至无法将 CopyProgressRoutine 函数作为 CopyFileEx 的参数传递 因为我无法声明指向该函数
  • 加载 data.table 对象后直接使用 get(data.table) 生成新变量

    我正在尝试在 data table 中生成一个新变量 我生成 保存并再次加载该变量 加载后 我通过 get 间接寻址 data table 只要我之前不直接寻址它以创建变量 这对于生成新变量就不起作用 可能是某种环境问题 Generate
  • CDI 注入在 Servlet 中不起作用

    我真的需要你的帮助 我现在正在研究这个问题几周或几个月 对于这么长的帖子 我深表歉意 但我想尽可能准确地解释问题和我的设置 我的 JAVA EE 6 Web 应用程序主要包含 3 个 Servlet javax faces webapp F
  • 如何从我的 Git 存储库中删除未引用的 blob

    我有一个 GitHub 存储库 有两个分支 master and release The release分支包含二进制分发文件 这些文件导致存储库大小非常大 超过 250 MB 因此我决定清理这些内容 首先我删除了远程发布分支 通过git
  • Hibernate 5 和类型化标准查询 (JPA2)

    问题 1 如果我从 Hibernate 4 x 升级到 Hibernate 5 x 我是否仍然可以使用 旧 条件查询 或者仅使用新的条件查询TypedJPA2 标准查询 旧的是否已被弃用 或者我可以同时使用两者吗 2 我是否正确理解新的类型
  • ASP.NET Core 中 IUrlHelper 的注入

    In RC1 IUrlHelper可以注入到服务中 用services AddMvc 在启动课程中 这不再适用于RC2 有谁知道怎么做RC2就像刚刚更新一个UrlHelper需要一个ActionContext目的 不知道如何将其置于控制器之
  • 无法通过 Apps 脚本 (JDBC) 连接到本地 MySQL 服务器

    请参阅下面的编辑 我留下原始问题以帮助其他人 我尝试通过 Apps 脚本和 JDBC 连接到本地 MySQL 服务器 但我不断收到两个错误之一 这段代码 function connectTest var conn Jdbc getConne
  • 如何打开屏幕?

    重复警告 此问题针对服务和前端 有一些类似的线程 但重点关注 GUI 方法 Problem 从任何状态开始 背景中播放音乐 屏幕打开 原文如此 屏幕关闭 手机锁定 手机解锁等等 我只想更改状态中的一件事 打开屏幕 其他什么都不应该改变 At
  • 在调查问卷样式 DataGridView 中仅从多个复选框列中选择一个复选框

    我创建了一个显示DataGridView带着一系列的问题 dgv 结构由一个用于问题文本的字符串列和三个用于答案的布尔 复选框列 是 否 N A 组成 每个问题都显示在自己的行中 我希望我的程序只允许用户在每一行上仅选择 是 否 或 不适用
  • PHP 7.4 检查属性是否真正初始化

    我想在 PHP 7 4 中检查属性是否真正初始化 将属性设置为 null 意味着它是用 null 初始化的 我不能使用isset因为即使设置为 null 它也会返回 false 我不能使用property exists因为即使未初始化它也会
  • 具有相同名称的 Jaxb 对象

    似乎可以解组两个不同的 jaxb具有相同的对象name 有一个Bar班级 public abstract Bar private XmlElement String val 有两个实现 构造函数等省略 XmlRootElement name
  • 使用okHttp上传图片

    我想使用上传图像okhttp但我无法找到用于发布图像的 MultipartBuilder 我可以用什么来代替这个 这是我的代码 public static JSONObject uploadImage File file try final
  • 传递地图坐标数组以在地图上快速绘制路线

    您好 我有一个像这样的坐标数据数组 它是从 API 调用中检索的 我使用 for 循环将数据附加到如下数组中 extension TripListViewController UITableViewDelegate func tableVi
  • 什么是 def ... else ... end 结构?

    我有这个代码 def with else puts we enter something funny if true puts yes return YES end return what else puts no return else