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

Programming languages 函数是抽象变量吗? 一个函数只不过是一个抽象变量?,programming-languages,theory,Programming Languages,Theory,不。函数不是抽象变量。 如果你的意思是“一个不包含一个直接可用值的变量”,是的,你可以把它看作是一个保持函数地址的变量。< /P> 例如,在函数为一级对象的语言中,可以将函数作为参数传递给函数 另外,在C语言中,可以将函数指针作为参数传递。不,函数不仅仅是获取一个值,比如,intfoo。函数可能有副作用,例如分配内存或打开文件。此外,C或C++中的函数不必返回值。p> 不使用函数将代码分解为逻辑部分,以允许重用并提高可读性。变量用于保存数据。它取决于语言和“抽象变量”的含义。 例如,在Scala

不。函数不是抽象变量。

如果你的意思是“一个不包含一个直接可用值的变量”,是的,你可以把它看作是一个保持函数地址的变量。< /P> 例如,在函数为一级对象的语言中,可以将函数作为参数传递给函数


另外,在C语言中,可以将函数指针作为参数传递。

不,函数不仅仅是获取一个值,比如,
intfoo
。函数可能有副作用,例如分配内存或打开文件。此外,C或C++中的函数不必返回值。p> 不使用函数将代码分解为逻辑部分,以允许重用并提高可读性。变量用于保存数据。

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

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

trait X {
  val y: Int
}
这个变量甚至可以是一个函数

所以。。。“视情况而定”。但是,请注意,在调用之前,必须提供一个具体的函数。如果它从未被调用(例如,它只是一个签名),那么它不一定要有一个具体的实现

C#支持真正抽象的概念,如果没有实现,就不会将其纳入最终构建。然而,它们不是变量

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

还有更多不同种类的编程语言——一些没有副作用(gasp)——而且至少应该提到,这些语言不会以某种思维方式(例如C/C++)自动装箱(蹩脚的Java双关语)——特别是在谈论语言设计理论时


<快乐编码> < /P>请在C和C++之间选择它们不是同一种语言。此外,没有“抽象变量”这样的东西——请详细说明我希望我知道“抽象变量”是什么:))函数就是函数。投票结束不是一个真正的问题欢迎来到StackOverflow!我喜欢你的问题,但是你能扩展你的思路吗?什么是“抽象变量”?请编辑你的问题。双重否定,没有解释…根据所用语言,有什么不正确或不完整。我觉得我对这个问题给予了应有的考虑。至于双重否定,我只是以牙还牙(见)。
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