ruby-on-rails - Ruby 可枚举块变量赋值
问题描述
鉴于此 ERB 代码
<% @client.sessionables.ordered.by_program_completion.reverse_each do | program_name_and_completion, sessionables | %>
<% program_name, program_completion_date = program_name_and_completion %>
<% # Render stuff... %>
<% end %>
我想摆脱第二行,在那里我使用多变量赋值从数组中提取program_name
和提取。有人会假设它可以直接在块分配中完成,例如program_completion_date
program_name_and_completion
sessionables.by_program_completion.each do | [program_name, program_completion_date], sessionables |
但上面的代码片段不起作用,所以我的问题是:
- Ruby 完全有可能吗?
- 如果是这样,正确的语法是什么?
解决方案
您可以提取内联参数,如下所示:
<% @client.sessionables.ordered.by_program_completion.reverse_each do |(program_name, program_completion_date), sessionables| %>
或者使用不那么冗长的语法编写相同的东西(这样更容易看到发生了什么!):
[[[1, 2], 3]].each { |(a, b), c| ... }
在块内,我们得到:a == 1, b == 2, c == 3
.
推荐阅读
- python - raise ValueError("x 和 y 数组沿" ValueError 的长度必须相等:x 和 y 数组沿插值轴的长度必须相等
- javascript - 如何从数组中选择一个随机对象,然后将其删除,以免重复?
- c# - 在单元测试中调用异步本地请求时没有返回结果
- python - 将python列表中的数据合并到一个数据框中
- node.js - 通过 npm 安装的 Angular 第三方模块的版本是否重要?
- c# - 适用于 Unity (3.15.1) 的 Admob 2018 包未在 android 移动设备(横幅、插页式、奖励视频等)中显示广告
- entity-framework-6 - IncludeFilter 多个级别不起作用
- mongodb - MongoDB搜索具有一系列键名的子文档?
- python - 更改直方图 x 轴范围
- r - 有效的时间加权平均值