作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在互联网上闲逛后,我找不到任何用 R 写过 quine 的人(编辑:自从写这篇文章以来,已经在 SO 上找到了几个,但我仍然对这个感兴趣)。所以我想我会尝试自己想出一个。我的结果是(令人惊讶的短)代码:
function(){}
function(){}
运行时。这利用了这样一个事实,即函数名后面没有括号或参数将返回函数的源代码。
function(){}
的范围(或类似的命令,如
logical(0)
)在打印自己时是自引用的。前者似乎对 SO 来说太主观了,但我希望对后者进行一些澄清。所以...
function(){}
,究竟发生了什么导致它打印自己的“源代码”?例如,R 是否将一个空函数加载到本地环境中,评估该函数,然后回顾定义它的代码进行打印?或者,只是看着
function(){}
并立即呼应其定义?这和这有本质区别吗
f<-function(){cat("f<-");print(f);cat("f()")}
f()
最佳答案
你不完全明白这里发生了什么。其实代码
function(){}
NULL
,所以不会“重新创建自己”。
function(){}
给出的输出但来自
print.function
.这是负责在控制台中显示函数对象的 S3 方法。你实际做的是:
a <- function(){}
print(a)
rm(a)
m<-"m<-0;cat(sub(0,deparse(m),m))";cat(sub(0,deparse(m),m))
关于r - function(){} 是真正的奎因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33509750/
在 Haskell 中使用“ap”monad 的正确方法是什么?我想做类似的事情: main = (putStr . ap (++) show) "main = (putStr . ap (++) s
我在维基百科上找到了这个代码块,作为 Ruby 中 quine(打印自身的程序)的示例。 puts <<2*2,2 puts <<2*2,2 2 但是,我不明白它是如何工作的。特别是,我没有得到的是,
我是一名优秀的程序员,十分优秀!