由于在my Java post中使用Global Vars的批评浪潮,我想使用没有全球变量的语言。每个答案都有一个建议,谢谢。
答案 0 :(得分:3)
如果您不想要全局变量,请不要使用它们。我不明白为什么找到一种不支持它们的语言会提供任何价值。你正在处理范围问题。让你的变量存在于尽可能最低的范围内,你会没事的。没有没有全球范围的语言。
答案 1 :(得分:3)
我不确定你是否确实意味着没有全局变量(值会发生变化),或者你是否还要排除全局常量(值不要改变)。 Haskell是一种没有全局变量的语言,尽管它确实具有全局常量(基本上是无参数函数的形式)。在Haskell中,如果要模拟全局状态,则必须将“全局”变量传递给您调用的每个函数。可以从HaskellWiki获得更好的描述。
答案 2 :(得分:3)
如果你想避免副作用,你可以使用纯函数式编程语言之一,如haskell(或erlang或...),它们只有常量。但是,与命令式编程风格相比,要为完全不同的编程做好准备。
答案 3 :(得分:1)
Java(和类似的OOP语言)没有真正的全局变量,所有变量都绑定到实例或类。但我认为你还想要了解“模拟的”全局变量(公共字段的唯一理由是从外部访问)。我不认为任何流行语言都不允许这样做,但更常见的语言概念可能有办法避免这种情况。
答案 4 :(得分:0)
好吧,我读到Graal是一种没有变量的函数式编程语言,所以我想这可能符合条件。
答案 5 :(得分:0)
我相信Eiffel不使用全局变量,但这不是一个严肃的标准 是否使用某种语言。
答案 6 :(得分:0)
Newspeak没有全局名称空间,因此也没有全局变量,所有内容都是后期绑定,我认为BETA家族中的其他语言具有相同的属性。
https://en.wikipedia.org/wiki/Newspeak_(programming_language)