Ruby 可枚举块变量赋值
Posted
技术标签:
【中文标题】Ruby 可枚举块变量赋值【英文标题】:Ruby enumerable block variable assignment 【发布时间】:2020-05-11 00:21:18 【问题描述】:鉴于此 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_and_completion
数组中提取program_name
和program_completion_date
。有人会假设它可以直接在块分配中完成,例如
sessionables.by_program_completion.each do | [program_name, program_completion_date], sessionables |
但上面的 sn-p 不起作用,所以我的问题是:
-
Ruby 完全可以做到这一点吗?
如果是这样,正确的语法是什么?
【问题讨论】:
【参考方案1】:您可以按如下方式提取内联参数:
<% @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
。
【讨论】:
以上是关于Ruby 可枚举块变量赋值的主要内容,如果未能解决你的问题,请参考以下文章
C 语言指针数据类型 ( 指针类型变量 与 指针指向的内存块 概念区别 | 指针赋值 | 指针运算 | 内存赋值 | 内存取值 | 内存修改注意事项 )