语言支持嵌套的函数定义

时间:2013-08-11 19:35:08

标签: python c function nested

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

例如: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

2 个答案:

答案 0 :(得分:2)

Wikipedia article有一个很好的总结:

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

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

  • Scala(全力支持)

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

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

    • GCC支持C语言中的嵌套函数 延期。
    • 与C相关的D语言已嵌套 功能。

  • Fortran,从Fortran-90开始,支持一个级别 嵌套(包含)子例程和函数。

答案 1 :(得分:0)

很多......作为一个例子:球拍/计划。考虑一下:

#lang racket

(define (fn x y)
  (define (minus x y)
    (- x y))
  (minus x y))
相关问题