在 ruby 中创建一对一映射时遇到问题
Facing issue with creating one to one mapping in ruby
我想与来自 3 个阵列的服务器进行一对一映射,并且阵列属于 ruby 中的不同区域。例如:
array1 = ['server1', 'server2']
array2 = ['server3', 'server4', 'server5']
array3 = ['server6', 'server7', 'server8']
在我的例子中,array2
和 array3
的长度将始终相同。我想在 cookbook 中使用它在我想与 array2
和 array3
进行一对一映射并仅搜索该特定服务器的服务器上执行。
例如,如果我在 server7 上执行此操作,那么它将 return server4 和 server7 仅进行一对一映射,并且始终从 array1
.
中选择第一个值
我正在使用此逻辑进行一对一映射:
array1 = ['a1', 'a2', 'a3']
array2 = ['b1', 'b2', 'b3']
array1.zip(array2)
但无法使用我的说明书正在执行的主机名进行解析。
你大部分的方法是使用 zip
来构建这个数据结构,但是你的实现只能在数组的 one 中查找服务器 -无法查找所有服务器。
所以我建议使用类似以下的内容来更改它:
servers_map = array2.zip(array3).to_h.tap do |hsh|
hsh.merge!(hsh.invert)
end
这将为您提供以下内容:
{"server3"=>"server6", "server4"=>"server7", "server5"=>"server8", "server6"=>"server3", "server7"=>"server4", "server8"=>"server5"}
如果你有一个变量 current_server
并且想得到一个 [serverA, serverB]
数组作为结果,你可以只使用:
[current_server, servers_map[current_server]]
我想与来自 3 个阵列的服务器进行一对一映射,并且阵列属于 ruby 中的不同区域。例如:
array1 = ['server1', 'server2']
array2 = ['server3', 'server4', 'server5']
array3 = ['server6', 'server7', 'server8']
在我的例子中,array2
和 array3
的长度将始终相同。我想在 cookbook 中使用它在我想与 array2
和 array3
进行一对一映射并仅搜索该特定服务器的服务器上执行。
例如,如果我在 server7 上执行此操作,那么它将 return server4 和 server7 仅进行一对一映射,并且始终从 array1
.
我正在使用此逻辑进行一对一映射:
array1 = ['a1', 'a2', 'a3']
array2 = ['b1', 'b2', 'b3']
array1.zip(array2)
但无法使用我的说明书正在执行的主机名进行解析。
你大部分的方法是使用 zip
来构建这个数据结构,但是你的实现只能在数组的 one 中查找服务器 -无法查找所有服务器。
所以我建议使用类似以下的内容来更改它:
servers_map = array2.zip(array3).to_h.tap do |hsh|
hsh.merge!(hsh.invert)
end
这将为您提供以下内容:
{"server3"=>"server6", "server4"=>"server7", "server5"=>"server8", "server6"=>"server3", "server7"=>"server4", "server8"=>"server5"}
如果你有一个变量 current_server
并且想得到一个 [serverA, serverB]
数组作为结果,你可以只使用:
[current_server, servers_map[current_server]]