我希望能够做到:
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"
在# HERE
行后,我希望两个字符串都包含"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
有没有更好的方法来实现这一目标?
答案 0 :(得分:3)
嗯,在您的示例中,以下任何一项都可以使用:
作业(类似于你的第一行):
string1 = string2 += " substring2"
连接一个字符串,两者都会更新,因为它们是同一个对象:
string1 << " substring2"
OR
string2 << " substring2"
所有这些解决方案都依赖于string1和string2在您的示例中完全相同的事实。如果string1
和string2
实际上是不同的字符串,并且您想要附加到这两个字符串,则可以尝试这样做:
[string1, string2].each{|str| str << " substring2"}
答案 1 :(得分:0)
您可以执行以下操作:
string1, string2=[string1, string2].map{|s| s+"substring2"}
答案 2 :(得分:0)
这个怎么样:
string1 = string2 += " substring2"
或者你需要做到这一点?我不知道你是否试图制作这么复杂的东西!