在ruby中,可以在同一行中附加两个字符串吗?

在ruby中,可以在同一行中附加两个字符串吗?,ruby,string,Ruby,String,我希望能够做到: 1.9.3-p448 :018 > string1 = string2 = "substring1" => "substring1" 1.9.3-p448 :019 > string1 => "substring1" 1.9.3-p448 :020 > string2 => "substring1" 1.9.3-p448 :021 > string1 += string2 += " substring2" # HERE

我希望能够做到:

1.9.3-p448 :018 > string1 = string2 = "substring1"
 => "substring1" 
1.9.3-p448 :019 > string1
 => "substring1" 
1.9.3-p448 :020 > string2
 => "substring1" 
1.9.3-p448 :021 > string1 += string2 += " substring2"    # HERE
 => "substring1substring1 substring2" 
1.9.3-p448 :022 > string1
 => "substring1substring1 substring2" 
1.9.3-p448 :023 > string2
 => "substring1 substring2" 
#此处
行之后,我希望两个字符串都包含
“substring1 substring2”
。是否有一种简洁的方法来实现这一点

编辑:其动机是构建一个包含明文密码的字符串。我想同时构建一个不包含密码的可记录字符串

EDIT2:根据@Ajedi32下面的建议,我现在有了这个。没关系,但肯定没那么漂亮

command = ""
public = ""

[command, public].each {|str| str << "command_name"}
[command, public].each {|str| str << " -a a"}
[command, public].each {|str| str << " -b b"}
[command, public].each {|str| str << " -c c"}
command << " -d d"
command << " -e e"
[command, public].each {|str| str << " -f f"}
command << " -g g"
[command, public].each {|str| str << " -h h"}
[command, public].each {|str| str << " -i i"}

puts command
=> command_name -a a -b b -c c -d d -e e -f f -g g -h h -i i
puts public
=> command_name -a a -b b -c c -f f -h h -i i
command=“”
public=“”

[command,public]。每个{| str | str都可以执行以下操作:

string1, string2=[string1, string2].map{|s| s+"substring2"}
这个怎么样:

string1 = string2 += " substring2"

或者你需要准确地完成它?我不知道你是否要做这么复杂的事情!

好吧,在你的例子中,以下任何一项都可以:

作业(类似于您的第一行):

连接一个字符串,两个字符串都会更新,因为它们是相同的对象:

string1 << " substring2"

在ruby中是没有办法的,而且在我所知道的任何语言中,这样的构造都不适用于您的第二次编辑,这更像是一个代码审查类型的问题,您可以发表在上面。解释您现有代码解决的问题,并征求关于如何改进代码以使其更简洁的建议。(在这里贴一个链接,我可能有兴趣自己回答。)我认为string1和string2是不同的字符串实际上
string1
可能不等于
string2
我认为使用map可以做得更好!是的,我认为这可能效果最好。我在Edit2下添加了我的代码现在的样子。对于CodeGolf,
string1
string1 << " substring2"
string2 << " substring2"
[string1, string2].each{|str| str << " substring2"}