2017-04-24 66 views
-2

IM做節目,我需要大量的結合變數,其中大部分的字符串,但我有一些INT,這樣做我如何組合變量?

name = "#{variable1}#{variable2}" 
name2 = "#{variable2}#{variable1}" 

只有兩個變量it'sa簡單的例子,但多數民衆贊成這個想法,我試圖做什麼。我一個接一個地做所有可能性,即使有兩個以上的變量,但有很多組合。有沒有一種簡單的方法來做到這一點,或者我必須一個接一個地做呢?另外,我是否需要單獨編寫引號還是這種方式沒問題?

+2

請提供示例輸入和所需輸出。 「我一個一個做所有可能性」還不清楚。 –

+0

看起來類似於http://stackoverflow.com/questions/554666/ruby-merging-variables-in-to-a-string – Bohdan

回答

3

這是你在想什麼?

variable1 = "cat" 
variable2 = 9 
variable3 = "lives" 
arr = [variable1, variable2, variable3] 
    #=> ["cat", 9, "lives"] 
arr.join  
    #=> "cat9lives" 
+0

或簡單地'arr.join' – Stefan

+3

@Stefan,有時你(比任何人都多)讓我感到非常愚蠢。 :-)修正。 (讀者:我以前有'arr.each_with_object(''){| obj,str | str <<「#{obj}」}')。 –

0

將這些變量的全部或部分放入一個數組中,這將使組合更容易。

s1 = 'a' 
s2 = 'b' 
s3 = 'c' 
n = 8 
[s1, s2, s3, n].combination(3).map(&:join) 
=> ["abc", "ab8", "ac8", "bc8"] 

上面的例子假設你將從數組中選擇3個變量中的任何一個並計算組合。您可能需要調整該號碼以滿足您的需求。

0

編程的整個想法並不是一個接一個地去做所有的可能性。 「有很多組合」:它們看起來像我的排列組合。如果是這樣的話:

var1 = "aa" 
var2 = "bb" 
var3 = 2 

res = [var1, var2, var3].permutation.map{|perm| perm.join} 
p res #=> ["aabb2", "aa2bb", "bbaa2", "bb2aa", "2aabb", "2bbaa"]