📜  Scala中的隐式参数

📅  最后修改于: 2022-05-13 01:55:12.144000             🧑  作者: Mango

Scala中的隐式参数

隐式参数是在 Scala 中使用隐式关键字传递给函数的参数,这意味着值将从调用它们的上下文中获取。简单来说,如果没有值或参数传递给方法或函数,那么编译器将查找隐式值并将其作为参数进一步传递。例如,将整数变量更改为字符串变量可以由 Scala 编译器完成,而不是显式调用它。在函数的参数范围内使用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!