2017-07-08 36 views
-1

https://stackoverflow.com/a/44981969/156458编程语言如何同时支持功能和面向对象编程?

有用于同时支持 功能和面向对象的编程语言两种常用的方法。

  • 每个可调用的方法和函数都只是隐藏类的方法,这是Ruby采用的方法;

  • 或每调用是一个函数和对象方法只是与接收 对象的方法是从调用,这是通过 的Python采用的方法的隐式或显式的参数的功能。

这是一个准确的说法吗?声明的来源是什么?

哪些以下语言支持功能和面向对象编程的方法:

  • 斯卡拉
  • 的Java
  • C#?

谢谢。

+0

有*其他*方法,但*索赔*是这两种常见的方法......然后用两个例子证明。 Scala,Java和C#使用虚拟机来实现(前两种使用相同的虚拟机) - 这意味着它是编程语言和运行时环境的组合,可以支持它。 –

+0

@NathanHughes你的意思是scala使用与上述两种不同的方法吗? – Tim

+0

我认为这句话是观察语言设计师是如何倾向于在事后才能对FP做基本支持的。作为一个实际问题,Scala必须使用jvm支持的构造,比如类。但是像clojure这样的nonOO jvm语言也必须这样做 –

回答

1

函数式编程是基于如下概念:

  • 高阶函数:你可以传递函数的功能和函数返回的功能。更多详情here
  • 不可变对象:创建后无法更改状态的对象。更多详情here
  • Pure函数:函数没有副作用,换句话说,当一个函数接收到一个输入时,它每次都会产生相同的输出。更多详情here

如果你可以做所有这些事情,该语言支持函数式编程。

斯卡拉:

  • 是基于JVM,所以支持OOP
  • 拥有val语法创建一个不可变对象。
  • 先后为high order function
  • 程序员的支持是负责创建纯函数

的Java 8:

  • 支持OOP
  • 有 '最后的' 关键字和有效的最终作出对象不可变
  • 支持高阶函数lambda expression
  • 程序员负责创建纯函数

C#支持函数式编程太多,但我不具备专业知识来回答你的问题!