Questions tagged «language-features»

有关特定计算机语言的独特方面的问题,尤其是在编写方式或提供给程序员的表达能力方面。

4
拥有诸如yield这样的生成器语言设施是一个好主意吗?
PHP,C#,Python和可能的其他几种语言都有yield用于创建生成器函数的关键字。 在PHP中:http://php.net/manual/en/language.generators.syntax.php 在Python中:https://www.pythoncentral.io/python-generators-and-yield-keyword/ 在C#中:https://docs.microsoft.com/zh-cn/dotnet/csharp/language-reference/keywords/yield 我担心作为一种语言功能yield会破坏一些约定。其中之一就是我所说的“确定性”。该方法每次调用都会返回不同的结果。使用常规的非生成器函数,您可以调用它,并且如果给定相同的输入,它将返回相同的输出。使用yield时,它会根据其内部状态返回不同的输出。因此,如果您在不知道生成函数的先前状态的情况下随机调用生成函数,则不能指望它返回某个结果。 这样的功能如何适应语言范式?它实际上违反了任何约定吗?拥有并使用此功能是个好主意吗?(举例说明什么是好事,什么是坏事,goto这曾经是许多语言的功能,现在仍然是,但是它被认为是有害的,因此已经从某些语言(例如Java)中消除了)。编程语言的编译器/解释器是否必须突破任何约定才能实现此功能,例如,语言是否必须实现多线程才能使此功能正常工作,或者可以不使用线程技术来完成?

6
如果有的话,在面向对象的系统中,应该在哪里选择类的C结构呢?
C和最有可能的许多其他语言提供了struct用于创建结构(或类似方式的东西)的关键字。从类的简化角度来看,它们是(至少在C语言中),但是没有多态性,继承,方法等。 考虑一下具有C样式结构的面向对象(或多范式)语言。您会在课堂上从哪里选择他们?现在,我不认为它们将与OOP一起使用,因为类似乎替代了它们的用途,但是我想知道在某些情况下,在面向对象的程序中,在某些情况下它们是否比类更受青睐。有这种情况吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.