代码之家  ›  专栏  ›  技术社区  ›  Muhammad Alkarouri

是否存在没有全局变量的编程语言?

  •  9
  • Muhammad Alkarouri  · 技术社区  · 15 年前

    是否存在定义范围时不扩展到所附函数的语言?换句话说,是否有一种语言,其中的代码如下(类似于Python的语法):

    >>> x = 3
    >>> def fact(n):
    ...     print x
    ...     return reduce(lambda u, v: u*v, xrange(1, n+1), 1)
    ...     
    

    将给出错误,因为x未在函数内定义 fact ?

    一般来说,是否有语言的范围 任何 函数中不包括定义的函数?

    编辑 :感谢您提供的信息性评论。我之所以想到这一点,是因为内部函数能够访问其包含函数所提供的所有环境,这与Joe Armstrong在其 argument against OOP :

    因为问题在于 面向对象的语言是 所有这些隐含的环境 他们随身携带。你

    Newspeak

    __builtins__

    3 回复  |  直到 11 年前
        2
  •  0
  •   trololo    11 年前

    import foo
    
    def square(x):
        return x*x
    
    print(square(int(raw_input("give a number: "))))
    

    def main(environment):
        environment['import']('foo')
        environment['square'] = lambda x: x*x
        environment['print'](environment['square'](int(environment['raw_input']("give a number:"))))
    

    def import_foo(modulename):
        # dummy example
        if modulename == 'foo':
            import foo
    
    environment = {
        'import': import_foo,
        'print': print,
        'raw_input': raw_input
    }
    
    main(environment)
    

        3
  •  -5
  •   Puppy    15 年前