省略空参数列表时未发现隐式

时间:2015-06-16 09:28:39

标签: scala type-inference typeclass implicit

我有以下(简化)代码:

Illuminate\Database\Eloquent\Collection Object
(
    [items:protected] => Array
        (
            [0] => App\BookingDates Object
                (
                    [connection:protected] => 
                    [table:protected] => 
                    [primaryKey:protected] => id
                    [perPage:protected] => 15
                    [incrementing] => 1
                    [timestamps] => 1
                    [attributes:protected] => Array
                        (
                            [id] => 267
                            [slot] => All Day
                       )

                    [original:protected] => Array
                        (
                            [id] => 267
                            [slot] => All Day
                        )

                    [relations:protected] => Array
                        (
                        )

                    [hidden:protected] => Array
                        (
                        )

                    [visible:protected] => Array
                        (
                        )

                    [appends:protected] => Array
                        (
                        )

                    [fillable:protected] => Array
                        (
                        )

                    [guarded:protected] => Array
                        (
                            [0] => *
                        )

                    [dates:protected] => Array
                        (
                        )

                    [casts:protected] => Array
                        (
                        )

                    [touches:protected] => Array
                        (
                        )

                    [observables:protected] => Array
                        (
                        )

                    [with:protected] => Array
                        (
                        )

                    [morphClass:protected] => 
                    [exists] => 1
                )

            [1] => App\BookingDates Object
                (
                    [connection:protected] => 
                    [table:protected] => 
                    [primaryKey:protected] => id
                    [perPage:protected] => 15
                    [incrementing] => 1
                    [timestamps] => 1
                    [attributes:protected] => Array
                        (
                            [id] => 265
                            [slot] => Morning
                      )

                    [original:protected] => Array
                        (
                            [id] => 265
                            [slot] => Morning
                      )

                    [relations:protected] => Array
                        (
                        )

                    [hidden:protected] => Array
                        (
                        )

                    [visible:protected] => Array
                        (
                        )

                    [appends:protected] => Array
                        (
                        )

                    [fillable:protected] => Array
                        (
                        )

                    [guarded:protected] => Array
                        (
                            [0] => *
                        )

                    [dates:protected] => Array
                        (
                        )

                    [casts:protected] => Array
                        (
                        )

                    [touches:protected] => Array
                        (
                        )

                    [observables:protected] => Array
                        (
                        )

                    [with:protected] => Array
                        (
                        )

                    [morphClass:protected] => 
                    [exists] => 1
                )

            [2] => App\BookingDates Object
                (
                    [connection:protected] => 
                    [table:protected] => 
                    [primaryKey:protected] => id
                    [perPage:protected] => 15
                    [incrementing] => 1
                    [timestamps] => 1
                    [attributes:protected] => Array
                        (
                            [id] => 266
                            [slot] => Afternoon
                       )

                    [original:protected] => Array
                        (
                            [id] => 266
                            [slot] => Afternoon
                        )

                    [relations:protected] => Array
                        (
                        )

                    [hidden:protected] => Array
                        (
                        )

                    [visible:protected] => Array
                        (
                        )

                    [appends:protected] => Array
                        (
                        )

                    [fillable:protected] => Array
                        (
                        )

                    [guarded:protected] => Array
                        (
                            [0] => *
                        )

                    [dates:protected] => Array
                        (
                        )

                    [casts:protected] => Array
                        (
                        )

                    [touches:protected] => Array
                        (
                        )

                    [observables:protected] => Array
                        (
                        )

                    [with:protected] => Array
                        (
                        )

                    [morphClass:protected] => 
                    [exists] => 1
                )

        )

)

现在我想在case class Value[T](value: T) trait Absable[In,Out] { def absoluteValue(in: In): Out } implicit class AbsValue[In, Out](in: Value[In]) { def abs()(implicit ev: Absable[In, Out]): Value[Out] = Value(ev.absoluteValue(in.value)) } implicit def AbsNumeric[A : Numeric] = new Absable[A, A] { def absoluteValue(in: A) = implicitly[Numeric[A]].abs(in) } 上使用abs函数:

Value

我在隐式参数前添加了一个空参数列表,以便为调用者提供更大的灵活性,但是现在当我在调用站点省略空列表时,编译器无法找到隐含的...所以现在而不是更灵活的调用者会使编译错误混乱 我不明白离开参数列表会如何影响类型推断或隐式解析。

我正在使用scala 2.11.6

0 个答案:

没有答案