【发布时间】:2019-07-21 11:37:34
【问题描述】:
我正在尝试学习函数式编程并且我正在编写一个打印可除数 2 的函数。我知道在函数式编程中它应该避免循环并且应该具有引用透明性,因此变量应该是不可变的。这是我写的函数,符合函数式编程范式吗?
public static void evenNumbers(int start, int end)
{
if (start <= 20)
{
if (start % 2 == 0)
{
System.Console.WriteLine(start);
}
evenNumbers(start + 1, end);
}
}
编辑我对代码做了一些修改
public static void evenNumbers(int start, int end)
{
if (start <= 20)
{
if (start % 2 == 0)
{
return start;
}
evenNumbers(start + 1, end);
}
}
【问题讨论】:
-
如果你想学习函数式编程,那么为什么不使用函数式语言,比如 F#?
-
question1是如何定义的?一种功能性方法是返回一系列匹配的数字,而不是执行副作用(如Console.WriteLine)作为过程的一部分。 -
我相信在里面调用 Console.WriteLine 已经破坏了这个函数的功能性质。
-
为了适应 FP,你的函数应该返回列表,而不是打印它。
-
如果我将 System.Console.WriteLine(start) 更改为返回 start 会起作用吗?