Scala中的隐式参数
隐式参数是在 Scala 中使用隐式关键字传递给函数的参数,这意味着值将从调用它们的上下文中获取。简单来说,如果没有值或参数传递给方法或函数,那么编译器将查找隐式值并将其作为参数进一步传递。例如,将整数变量更改为字符串变量可以由 Scala 编译器完成,而不是显式调用它。在函数的参数范围内使用implicit关键字时,所有参数都被标记为隐式。
注意:一个方法只能包含一个隐式关键字。
句法:
def func1(implicit x : Int) // x is implicit
def func2(implicit x : Int, y : Int) // x and y both are implicit
def func3 (x : Int)(implicit y : Int) // only y is implicit
示例 1:
Scala
object Main{
def main(args: Array[String])
{
val value = 10
implicit val multiplier = 3
def multiply(implicit by: Int) = value * by
// Implicit parameter will be passed here
val result = multiply
// It will print 30 as a result
println(result)
}
}
Scala
object Main{
def main(args: Array[String])
{
val message = "hello "
implicit val name = "world!"
def disp(implicit nm : String) = message + nm
// Implicit parameter will be passed here
val result = disp
// Implicit parameters will not be passed
val result2 = disp("GFG!")
println("With Implicit parameters:")
println(result)
println("Without Implicit parameters:")
println(result2)
}
}
输出:
30
示例 2:
斯卡拉
object Main{
def main(args: Array[String])
{
val message = "hello "
implicit val name = "world!"
def disp(implicit nm : String) = message + nm
// Implicit parameter will be passed here
val result = disp
// Implicit parameters will not be passed
val result2 = disp("GFG!")
println("With Implicit parameters:")
println(result)
println("Without Implicit parameters:")
println(result2)
}
}
输出
With Implicit parameters:
hello world!
Without Implicit parameters:
hello GFG!