How do you create scala anonymous function with multiple implicit parameters

后端 未结 1 1237
抹茶落季
抹茶落季 2021-02-20 12:19

I have scala functions called \"run1\" and \"run2\" which accept 3 parameters. When I apply them I want to provide an anonymous function with implicit parameters. It doesn\'t wo

1条回答
  •  猫巷女王i
    2021-02-20 12:42

    You're currying the function inside run2 so run2 still needs a non-curried function. See the code below for a version that works:

    object Main extends App {
      type fType = (Object, String, Long) => Object
      type fType2 = Object => String => Long => Object //curried
    
      def run1( f: fType ) {
        f( new Object, "Second Param", 3)
      }
    
      // Won't work, language spec doesn't allow it
      run1 { implicit (p1, p2, p3) => 
        println(p1)
        println(p2)
        println(p3)
        new Object()
      }
    
      def run2( f: fType2 ) {
        f(new Object)("Second Param")(3)
      }
    
      run2 { implicit p1 => implicit p2 => implicit p3 =>
        println(p1)
        println(p2)
        println(p3)
        new Object()
      }
    }
    

    0 讨论(0)
提交回复
热议问题