我是一名java程序员,正在尝试理解方法(java方法)和函数(例如c ++)之间的区别.我曾经认为它们是相同的,只是不同编程语言的不同命名约定.但是现在我知道他们不是,我无法理解差异.
我知道一个方法涉及一个类的实例,并且可以访问类数据(成员变量),而一个函数不能(?).那么函数有点像静态方法吗?
看到这里我读到的解释让我想到了这一点.
假设我有一个返回列表的方法的以下类:
Class C():
def f():
return [1,2,3]
Run Code Online (Sandbox Code Playgroud)
如果我循环这个方法如下:
c=C()
for i in c.f():
print i
Run Code Online (Sandbox Code Playgroud)
在for循环中,cf()会被执行多次吗?如果是,为了得到它一次,我是否必须在循环之外做任务,或者有一些微不足道的方法?
Object类具有方法和函数,这意味着它们都可以通过Object.nameOfMethodOrFunction()访问.下面的问题方法和函数之间的区别是什么解释了方法和函数之间的区别,但它没有解释如何在对象中创建它们.例如,下面的代码定义了方法sayHi.但是如何在同一个对象中定义一个函数呢?
var johnDoe =
{
fName : 'John',
lName: 'Doe',
sayHi: function()
{
return 'Hi There';
}
};
Run Code Online (Sandbox Code Playgroud) 我一直在使用Visual Studio开发C++应用程序.我不是C++方面的专家,也不是像C#那样从C派生的其他语言.因此,研究视觉工作室的符号系统,我找到了相同符号"Field或Variable"的参考.如果我错了请更正,但这对我来说几乎就像"方法或功能"的定义.
在C++中没有方法,相反它们通常被称为函数.因此,在C++中也没有Fields,它是C#的一个特殊性,它像一个变量,除了它应该是私有的,它需要从"Get"调用访问.我错了吗?
这会引起混淆,在java7和java8中使用可互换的术语"function"vs"method"吗?
我知道java 8引入了一些像lambda演算这样的概念,它允许插入一小部分功能范例.
函数如lambda演算,函数式编程.
最近看到一个在Unity中使用C#生成对象的教程。因为老师使用了这样的函数
public IEnumerator CallSpawner()
{
yield return new WaitForSeconds(0.5f);
SpawnObstacles();
}
Run Code Online (Sandbox Code Playgroud)
我想问一下 IEnumerator 函数有什么用?我们不能通过这个过程来做到这一点吗
float diffTime = 0f;
private void Update()
{
if(Time.time - diffTime == 0.5f)
{
diffTime = Time.time;
SpawnObstacles();
}
}
Run Code Online (Sandbox Code Playgroud)
我阅读了文档但无法理解它..
说我有:
class A {
public:
static void DoStuff();
// ... more methods here ...
};
Run Code Online (Sandbox Code Playgroud)
后来我有一个想要调用DoStuff的函数:
B::SomeFunction(A* a_ptr) {
Run Code Online (Sandbox Code Playgroud)
是否更好地说:
a_ptr->DoStuff();
}
Run Code Online (Sandbox Code Playgroud)
或者更好,即使我有一个实例指针:
A::DoStuff()
}
Run Code Online (Sandbox Code Playgroud)
这纯粹是一种风格问题,但在做出决定之前,我想得到一些明智的意见.
我刚刚开始我的计算学位三年级,并一直在查看课程材料.我的应用程序开发模块基于c#.在整个材料中,讲师将我所谓的"方法"称为"功能".我知道术语'函数'用于(例如)c ++作为代码块,但我认为OOP使用'方法'来区分两种不同类型的编程.
那么,两者是否可以互换或者讲师应该使用术语"方法"吗?
我被要求回答这个问题:
如果我想告诉用户有关某个实例变量或方法的细节,我应该在哪里放置/**和*/的Javadoc特定注释表示法?
我回答说:
在函数声明之上.
答案被拒绝了,原因如下:
函数采用非面向对象的语言.方法是正确的名称.
这是真的?
所以这个问题来自之前的一篇文章,我在试图完全了解更复杂的C#之前,我正试图完全理解.
我的问题具体涉及函数的返回值.
请考虑以下功能代码:
public static void DisplayResult(int PlayerTotal, int DealerTotal){
if (PlayerTotal > DealerTotal) {
Console.WriteLine ("You Win!");
Console.ReadLine ();
}
else if (DealerTotal > PlayerTotal) {
Console.WriteLine ("Dealer Wins!");
Console.ReadLine ();
} else {
Console.WriteLine ("It is a Draw!");
Console.ReadLine ();
}
Run Code Online (Sandbox Code Playgroud)
我当然错了,但我相信第一行代码中的"void"关键字意味着函数代码结果不返回值.
我想要了解的是 - 函数计算结果.它根据结果分发文本(例如:"你赢了!"等).该函数的结果是否被视为值?
通过我自己的(新手)逻辑,我会想到以下两件事之一:
我希望这是有道理的.我认为理解这个概念将使我以后更容易编写函数而无需再次猜测返回值.如果有人有一个实际上会返回一个值的函数的例子,那么也会受到赞赏.