访问 Ruby 中的哈希,就像 Coffeescript 中的对象一样



最近我使用Backbone.js和Coffeescript开发了一些代码,并且非常习惯于Coffeescript内置方法来访问作为对象传递的内容:

{ firstname, lastname, @email } = options

这相当于:

firstname = options.firstname
lastname = options.lastname
@email = options.email

问题

是否有任何内置的 Ruby 语法可以在 Ruby 的哈希上实现相同的行为?

到目前为止,我设法实现的是:

firstname, lastname, @email = params.values_at(:firstname, :lastname, :email)

但这不是问题的1:1解决方案。

编辑 #1

由 Coffeescript 生成的 JS:

var firstname, lastname;
firstname = options.firstname, lastname = options.lastname, this.email = options.email;

Ruby 没有任何内置的解决方案;您的解决方案是正确的方法。

firstname, lastname, @email = params.values_at(:firstname, :lastname, :email)

如果你碰巧知道哈希是一个有序哈希,并且只包含你想要的值,并且按照你想要的顺序,那么你可以获得这样的所有值:

# Suppose params = {
#    firstname: …, 
#    lastname: …,
#    email: ….
# }
firstname, lastname, @email = params.values

作为一般提示,如果您碰巧知道哈希是有序哈希,并且包含的条目多于您想要的值,但这些值是按您想要的顺序排列的,那么您可以获取所有值并跳过您不关心的值。根据需要多次使用"无用"下划线变量作为占位符,以跳过可省略的值:

# Suppose params = {
#    firstname: …, 
#    middlename: …,
#    lastname: …,
#    bithdate: …,
#    email: …, 
#    whatever: …
# }
firstname, _, lastname, _, @email, _  = params.values

相关内容

最新更新