函数一个抽象变量?

时间:2011-03-19 20:03:36

标签: programming-languages theory

函数只不过是一个抽象变量吗?

5 个答案:

答案 0 :(得分:1)

不,除了获得int foo之类的值之外,功能还有很多。函数可以具有副作用,例如分配内存或打开文件。此外,C或C ++中的函数不必返回值。

答案 1 :(得分:0)

如果您的意思是“一个不具有直接可用值的变量”,那么您可以将其视为包含该函数地址的变量。

例如,在函数是第一类对象的语言中,您可以将函数作为参数传递给函数。

此外,在C中,您可以将函数指针作为参数传递。

答案 2 :(得分:0)

没有使用任何函数将代码分解为逻辑部分以允许重用并提高可读性。变量用于保存数据。

答案 3 :(得分:0)

这取决于语言和“抽象变量”的含义。

例如,在Scala中,可以定义一个抽象变量:

trait X {
  val y: Int
}

并且变量甚至可以“成为一个函数”!

trait MyMath[T] {
  // abstract
  val square: (T) => T
}

object IntegerMath extends MyMath[Int] {
  // concrete value (implementation) given to [previously-]abstract variable
  val square = (i: Int) => i * i
}

IntegerMath.square(2) // 4

所以......“这取决于”。但是,请注意,在调用之前,必须提供具体的函数。如果它从未被调用过(例如它只是一个签名),那么必然必须具有具体的实现。

C#支持Partial Methods的概念,真正抽象如果没有给出实现,不会进入生成的构建。然而,它们不是变量。

  
    

如果未提供实现,则在编译时删除方法和对方法的所有调用。

  

还有更多不同类型的编程语言 - 有些没有副作用( gasp ) - 这些至少应该被提及为不自动装箱(蹩脚的Java双关语)以某种方式(例如C / C ++)思考 - 特别是在谈论语言设计理论时。

快乐的编码。

答案 4 :(得分:-1)

没有。函数不仅仅是一个抽象变量。