为Ruby中另一个数组的每个条目创建两个唯一条目的数组

Pat*_*lly 0 ruby arrays

我正试图像一个阵列

[ "First.Package", "Second.Package" ]
Run Code Online (Sandbox Code Playgroud)

把它变成

[ "First.Package.ads", "First.Package.adb", "Second.Package.ads", "Second.Package.adb" ]
Run Code Online (Sandbox Code Playgroud)

我尝试过以下方法:

packages = [ "First.Package", "Second.Package" ]
files = []
packages.each do |package|
    files << (package << ".ads")
    files << (package << ".adb")
end
return files
Run Code Online (Sandbox Code Playgroud)

这不符合我认为它应该做的事情.我明白了:

First.Package.ads.adb
First.Package.ads.adb
Second.Package.ads.adb
Second.Package.ads.adb
Run Code Online (Sandbox Code Playgroud)

我想要:

First.Package.ads
First.Package.adb
Second.Package.ads
Second.Package.adb
Run Code Online (Sandbox Code Playgroud)

Car*_*and 5

packages = ["First.Package", "Second.Package"]
suffixes = [".ads", ".adb"]

packages.product(suffixes).map(&:join)
  #=> ["First.Package.ads", "First.Package.adb",
  #    "Second.Package.ads", "Second.Package.adb"]
Run Code Online (Sandbox Code Playgroud)

注意

packages.product(suffixes)
  #=> [["First.Package", ".ads"], ["First.Package", ".adb"],
  #    ["Second.Package", ".ads"], ["Second.Package", ".adb"]]
Run Code Online (Sandbox Code Playgroud)

请参见Array#product.

  • 我会选择这个.如果`packages`或`suffixes`获得新元素而不必编写更多代码,它将起作用. (2认同)