0

哪些编程语言支持函数的嵌套定义?

例如:python中的嵌套函数

def FuncAsClass():

    x=1             # data members
    def setX(val):  # setter methods
        nonlocal x
        x=val
    def getX():     #getter
        return(x)
    def adder():    # arbitrary state-dependent method
        total=0
        for i in range(x+1):
            total+=i
        return total
    # the interface offered by the class
    interface ={"setX":setX, "getX":getX, "sum":adder }
    return interface
4

2 回答 2

2

维基百科文章有一个很好的总结:

  • 基于 ALGOL 的语言,例如 ALGOL 68、Simula、Pascal、Modula-2、Modula-3、Oberon、Seed7 和 Ada。

  • 现代版本的 Lisp(具有词法范围),例如 Scheme 和 Common Lisp。ECMAScript(JavaScript 和 ActionScript)。

  • 斯卡拉(完全支持)

  • 对脚本语言如 Ruby、Python 和 Perl(从版本 6 开始)提供不同程度的支持。

  • 标准 C 和 C++ 不支持嵌套函数,但是:

    • GCC 支持 C 中的嵌套函数,作为语言扩展。
    • 与 C 相关的 D 语言具有嵌套函数。

  • Fortran,从 Fortran-90 开始,支持一级嵌套(CONTAINed)子例程和函数。
于 2013-08-11T19:40:11.777 回答
0

很多......例如:球拍/计划。考虑一下:

#lang racket

(define (fn x y)
  (define (minus x y)
    (- x y))
  (minus x y))
于 2013-08-11T19:37:31.077 回答