首先,我要指出,我对编程语言解剖学的理论知识不够深入,我事先表示歉意。
这也可能是一个愚蠢的问题,我对此表示歉意,但我一直在想,为什么在编程语言(至少是我熟悉的语言)中没有return if语句,或者至少没有语法糖,特别是在Python或Lua这样的语言中,这些语言的水平相对较高,并且经常允许使用语法糖的替代拼写。
例如,以下列代码为例:
if(x > y) {
return x;
}
当然你直接知道会发生什么,if x > y is true x is returned。然而,人们现在可以提出以下论点:
根据编程语言的不同,一个简单的语句需要几行代码。当然,您可以像i
还有另一个标题为“函数式并行的编程语言: F# vs Haskell”的线程,其中的OP声明“函数式编程具有不可变的数据结构,并且没有任何副作用,这本质上适合于并行编程”。
Jon Harrop在他的回答中认为:“并行仅仅是关于性能的,而纯粹的性能会降低性能。因此,如果你的目标是获得良好的性能,那么纯粹的函数式编程不是一个很好的起点。”
好吧,我不打算深入探讨函数式编程是否真的提高了性能;看起来这是一个实现问题。我感兴趣的是在概念层面上:
“不可改变的数据”和“无副作用”都是容易并行化所必需的吗?它们是充分条件还是必要条件?它们是保证数据独立性或交换性所必需的吗?欢迎参考学术文献。
偶尔--但反复出现--我面临以下循环模式问题:
CodeSnippet1
DO WHILE LoopCondition //LoopCondition depends on some pre-calculation from CodeSnippet1
CodeSnippet2 //CodeSnippet2 relies on LoopConditon=true
CodeSnippet1
LOOP
我在这里看到的问题是CodeSnippet1的代码复制。
乍一看,我似乎应该把这个条件移到最后:
DO
CodeSnippet1
CodeSnipp
我对PHP面向对象编程有一些疑问。
想象一下这样的场景:
abstract class A {}
class B extends A {}
interface C {
public someMethod(A $a);
}
有没有可能这样做,或者有其他的解决办法呢?
public class D implements C {
public function someMethod(B $b) {
// do something nice!
}
}
我和一个朋友讨论了编程,他是函数式编程的倡导者。他提到您不需要使用if语句,但我似乎无法概念化您将如何实现
if (something):
do this;
else:
do something_else;
在功能范式中?
编辑:我的朋友特别提到,有些情况下你不需要使用if表达式,即使你可以。例如:
if x is odd:
x + 1
else:
x / 2
是否有一种不使用任何if语句或条件来实现上述功能的方法?