Groovy quine!它是如何工作的?

Ant*_*t's 1 groovy

奎因是一种自我复制的代码.例如,如果groovy中的代码如下所示:

def s = 20
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码时,我应该将程序语句作为我的输出.所以上面的代码应该产生:

def s = 20 //as this is my input..
Run Code Online (Sandbox Code Playgroud)

正如我在Groovy Console中看到的,我开始知道groovy支持Quine:

s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)

但我不知道它是如何工作的!可以有人说我,上面链接中的代码如何工作?

提前致谢!

tim*_*tes 5

有问题的代码是:

s='s=\\\';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)

所以,左边的语句定义了一个字符串,然后右边的语句将字符串的不同位加在一起:

如果我们添加以下内容以打印出它正在做的事情:

println s[0..1]
println s[3]
println s[0..1]
println s[2] * 6
println s[3..-1] * 2
Run Code Online (Sandbox Code Playgroud)

我们得到输出:

s=
'
s=
\\\
';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2';s[0..1]+s[3]+s[0..1]+s[2]*6+s[3..-1]*2
Run Code Online (Sandbox Code Playgroud)

如果将所有这些字符串添加到一起,您将获得原始程序.