下面的示例在什么情况下返回本地x与全局x?R的本地/全球问题是什么?
西安的博客中写道,在http://xianblog.wordpress.com/2010/09/13/simply-start-over-and-build-something-better/
其中最糟糕的问题就是范围界定如下。考虑下面的小宝石。
f =function() {
if (runif(1) > .5)
x = 10
x
}
该函数返回的x是随机的本地或全局的。还有其他一些例子,变量在局部和非局部之间在函数体内交替。没有明智的语言会允许这样做。这很丑,它使优化真的很难。这不是唯一的问题,因为范围界定和懒惰评估之间的相互作用,甚至会出现更奇怪的事情。
PS - 是由罗斯·哈卡写这篇西安博客文章?
编辑 - 跟进问题。
这是补救?
f = function() {
x = NA
if (runif(1) > .5)
x = 10
x
}
该职位不是由罗斯写的,西安的噩转载部分/全部评论罗斯在第一链接到西安的噩张贴由发布行。你已经逐字复制了西安的Og逐字抄袭罗斯的评论。 –
由于@GavinSimpson在他很好的答案指出,这是不是与R的问题,我曾经工作过的每个其他编程语言有某种机制,做同样的事情,即允许局部变量和全局变量。所以你应该能够在其他许多语言中复制这个小例子。 R是放松对强迫你声明变量的类型,但是这并不意味着你不应该... – Andrie
这是某种形式的洁癖“重新啁啾”演习?我很困惑... – Chase