在Ruby中将数组复制到对象 [英] Complex mapping of array to object in Ruby
本文介绍了在Ruby中将数组复制到对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个字符串数组:
[username,String,password,String ]
我想将此数组转换为Field对象列表:
class Field
attr_reader:name,:type
def initialize(name,type)
@name = name
@type = type
end
end
所以我需要映射username,String=> Field.new(username,String)等。数组的长度将始终为2的倍数。
有人知道这是否可以使用地图样式方法调用?
解决方案
1.8.6:
require'枚举器'
result = []
arr = [username,String,password,String]
arr.each_slice(2){| name,type |结果< Field.new(名称,类型)}
或者Magnar的解决方案稍短一点。 >
对于1.8.7+,您可以执行以下操作:
arr.each_slice(2 ).map {| name,type | Field.new(name,type)}
I have an array of strings:
["username", "String", "password", "String"]
And I want to convert this array to a list of Field objects:
class Field
attr_reader :name, :type
def initialize(name, type)
@name = name
@type = type
end
end
So I need to map "username", "String" => Field.new("username", "String") and so on. The length of the array will always be a multiple of two.
Does anyone know if this is possible using a map style method call?
解决方案
1.8.6:
require 'enumerator'
result = []
arr = ["username", "String", "password", "String"]
arr.each_slice(2) {|name, type| result << Field.new(name, type) }
Or Magnar's solution which is a bit shorter.
For 1.8.7+ you can do:
arr.each_slice(2).map {|name, type| Field.new(name, type) }
这篇关于在Ruby中将数组复制到对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文