【发布时间】:2015-08-04 19:11:10
【问题描述】:
我正在为课程的一些代码编写解释,并且不小心交替使用了 method 和 function 这两个词。我决定回去修正措辞,但在我的理解中遇到了一个漏洞。
据我了解,如果子例程不作用于类的实例(其效果仅限于其显式输入/输出),则子例程是 function,如果它在一个类的实例(它可能会对实例产生副作用,使其不纯)。
有一个关于该主题的good discussion here。请注意,根据公认答案的定义,静态 method 实际上应该是一个函数,因为实例永远不会被隐式传递,并且它无权访问任何实例的成员。
考虑到这一点,静态methods 不应该是函数吗?
根据他们的定义,它们不会作用于类的特定实例;他们只是因为关系而与班级“绑在一起”。我已经看到一些好看的网站将静态子例程称为“方法”(Oracle、Fredosaurus、ProgrammingSimplified),所以要么他们都忽略了术语,要么我遗漏了一些东西(我的猜测是后者)。
我想确保我使用了正确的措辞。
有人可以澄清一下吗?
【问题讨论】:
-
我一直以为是php中的函数和Java中的方法。基本上是同一个东西,名字不同
-
理论计算机科学和语言如何应用它是有区别的。 JLS 没有区别,称其为方法。
-
看一下 Python 中“函数”和“方法”的定义可能会很有趣,其中有 区别:基本上,函数是带有符号表和调用约定的代码,而方法是将函数放入类中时得到的。但是,即使对于了解 Python 的人来说,差异也很微妙。
-
我学理论的时候,学过函数有返回值,而过程没有。然后我学习了java调用函数和过程方法。现在我正在尝试函数式编程并且函数是幂等的。这些术语会根据上下文改变含义。
标签: java methods static static-methods terminology