2009-06-07 86 views
1

我可以有一个函数零参数和没有返回类型?我可以使用零参数并且不返回typelang吗?

如果答案是肯定的,那么你在哪里使用这些类型的函数?

另外什么是void函数返回一个空值或零值?我很困惑。

+1

请指定您学习的语言,以便用户更容易回答您的问题并提供示例。 – Shimmy 2009-06-07 07:08:38

+0

是的,你需要指定哪种语言。在许多语言(C,C++,javascript等)中,术语“功能”涵盖了子例程(可能有副作用)以及“纯”功能。 – Dipstick 2009-06-07 07:34:30

回答

2

我可以有零个 参数的功能,并没有返回类型

是的,尽管许多语言要求你申报的void或在这种情况下,类似的返回类型。

在哪里使用这些类型的功能,

除非定义“功能”严格表示“没有副作用”,他们可以成为副作用,例如有用有用

public void invalidate() 
{ 
    this.invalid = true; 
} 

这将成为可以失效的对象的一部分(并且一旦发生这种情况,将永远保持无效状态)。

当然,在完全不允许副作用的纯函数式语言中,这种情况是不可能的 - 但是在这样的语言中,没有返回值的函数通常是没有意义的。

,也是我的疑问是什么呢无效 函数返回一个空值或零 值我很困惑。

它什么都没有返回。如果你试图在任何地方使用它,它会产生一个返回类型(例如,作为另一个函数的参数),你会得到一个编译器错误。

1

是的,例如,如果一个函数只是打印出“hello world”或者一些计算,那么它可以不带任何参数,并且根本不需要返回任何值。

例如,你可以有一个PHP函数

function printPageFooter() { 
    echo "<p>Thanks for coming. Come back soon!</p>\n"; 
} 

实际打印出网页的HTML中的页脚。这个函数不带任何参数并打印出来,并且不返回任何东西。

如果是如C语言,然后当你说

void PrintPageFooter() { 
    /* do something */ 
} 

你说的这个功能不会在函数定义的前使用“空缺”返回任何东西。

我记得在帕斯卡尔,当我很久以前学会它时,所有的函数都必须返回一些东西。如果不是,那么它就是一个“程序”。

2

如果您可以指定您学习的语言,那将会很有帮助。

无论如何,在我所知道的通用语言中,答案是肯定的。 有时是需要具备的功能来为你做的东西,没有参数笔录并没有返回值:

VB:

Sub DoAction() 'Takes 0 parameters 
    'Do actions 
    'Doesn't return a value 
End Sub 

C#:

void DoAction() //Takes 0 parameters 
{ 
    //Do actions 
    //Doesn't return a value 
} 
0

当然可以的啊,例如它可以将一些计算结果打印到屏幕上;)

5

只有在允许副作用的语言中才有意义,当您只需要副作用时可以使用它。例如,考虑在控制台应用程序上长时间运行的操作。为了让用户知道你没有被屏蔽,你可能需要在屏幕上每隔一段时间打印一个点。

void printdot() { 
    printf("."); 
} 

该功能不需要任何参数也没有任何返回值,并且仍然是有意义的本身。您调用函数来实现副作用(更改屏幕)。

1

不要将它与数学函数混淆。函数(或过程或子例程)是一些代码块。他们帮助程序员编写结构化代码。如果你想要一个例程的结果,那么你可以有一个。就这样。

0

在编程理论和大多数计算机语言中,答案是否定的;函数必须具有返回值。

但是,某些语言(例如C系列(C,C++,Java,Javascript,C#等))使用函数的退化概念,该函数将子例程视为没有返回值的函数。因此,在这些语言中,答案是“是”,您将使用这些函数(实际上是子例程)来生成由环境或上下文状态驱动的操作副作用。

相关问题