Scala中参数的变化

时间:2016-06-06 23:42:54

标签: scala

我是Scala的新手,想知道以下

之间的区别
define testFunc(par1: String) =  { }

define testFunc(par1: String)(par2: String) = {}

define testFunc(par1: String)(implicit par2: String) = {}

1 个答案:

答案 0 :(得分:2)

def testFunc(par1: String) =  { }

String为唯一参数的函数(实际上是一种方法)。

def testFunc(par1: String)(par2: String) = {}

一个函数(方法),它接受两个类型为String的参数。参数为curried

Currying很有意思。如果你有一个带有两个curried参数的函数,并且你只使用第一个参数调用该函数,那么你得到的是一个带有另一个参数的新函数。

def testFunc(par1: String)(implicit par2: String) = {}

与上一个相同但如果在调用函数时未提供第二个参数,则编译器将查看已声明String的{​​{1}}是否可用。如果只有一个隐式字符串在范围内,那么它将用作第二个参数。

请注意,这会更改函数的curried方面,因为如果未找到或提供隐式,则会出错。你没有像以前那样得到新功能。