【发布时间】:2018-07-04 07:04:00
【问题描述】:
我们如何接受函数名作为用户输入?标准库中是否有任何成员,如 readLine、readByte 等可以解决此目的?
上下文:作为函数式编程的一部分,我需要将函数名作为第一个参数传递,但我希望接受它作为用户输入,而不是硬编码。
请提出建议。
这里是示例代码:
def square(x:Int):Int = x*x
def sum(f: Int => Int, a:Int, b:Int):Int ={
if(a>b) 0 else f(a) + sum(f,a+1,b)
}
println("Enter the first number:")
var num1 = readInt()
println("Enter the second number:")
var num2 = readInt()
val ressum = sum(square,num1,num2)
【问题讨论】:
-
传递函数名和传递函数本身有很大的不同。鉴于您的上下文是函数式编程实践,您确定您实际上并不想要后者吗?将函数名称作为字符串传递几乎不是惯用的 FP。
-
你能解释一下你想要实现的目标吗?您是否希望用户输入函数名称,然后从您要执行该函数的代码中输入?
-
参考我添加的示例代码
-
你可以使用反射来做到这一点,但反射确实应该被视为最后的手段,我强烈建议使用 jwvh 的方法,除非有一个非常非常强有力的理由不满意
标签: scala