2017-04-24 71 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"]