我正在大学学习编程范式,并阅读讲师提供的课程材料,其中定义了一个函数:
val double = (x: Int) => 2 * x
double: Int => Int = <function1>
但是从我的研究中,我发现并习惯于这样定义同一个函数:
def d (x: Int) = 2 * x
d: (x: Int)Int
我是Scala的新手。这两个定义都会产生一个结果:
res21: Int = 8
当参数为4
时。现在我的主要问题是为什么讲师更喜欢使用val
来定义函数?我认为这样做更长,而且不是必要的,除非使用val
会带来一些我不知道的额外优势。此外,我了解到使用val
会使某些名称成为占位符,因此在程序后期,我可能会错误地编写val double = 5
,从而导致函数消失!在这个阶段,我相信我学到了一种更好的定义函数的方法,除非有人告诉我其他的方法。
val double = 5
了吗?我有印象一旦名称被定义就不可能重新定义。无论如何,val
和def
在这里产生相同的结果。区别只是风格上的差异。通常,使用def
定义函数更清晰,但有时可以使用val
来定义它也是有意义的。如果您不确定,我建议您选择def
,因为这不太可能引起任何混淆。 - kqrval double = 5
,输入了double
,然后得到了res24: Int = 5
。 - emival
使某个名称成为占位符” - 这并不重要,def d
也引入了一个名为d
的符号,你可以通过重新定义它来遮蔽它。在这方面,两者之间没有真正的区别。 - 0__