在编写 Ruby 方法以生成一串非重复字符的排列时偶然发现了这一点:
class String
def permutations
@result_array = []
recurse( "", self.each_char.to_a )
@result_array
end
def recurse( prepend_character, sub_array )
sub_array.each{ |c|
recurse( prepend_character + c, sub_array - [c] )
}
@result_array << prepend_character if sub_array.empty?
end
end
p "abc".permutations # prints: ["abc", "acb", "bac", "bca", "cab", "cba"]
正在考虑是否适合或建议在核心类中创建一个属性并保存数据。有什么想法可以避免使用属性来实现这一点(不使用全局变量)?