Scala 如何引用带有隐式参数的方法
Scala how to reference a method that with an implicit parameter
该方法有一个隐式参数不能作为参数引用?
在我的代码中,我创建了一个具有隐式参数的方法。有时我只想将它转移到其他方法。这次 Scala 给我错误。见下文:
case class ComplicatedSalesTaxData(baseRate: Float,isTaxHoliday: Boolean)
def calcText(amount: Float,rate : (ComplicatedSalesTaxData) => Float ) : Float = amount * rate(ComplicatedSalesTaxData(0.06F,false))
def rate(implicit cstd:ComplicatedSalesTaxData) = {
if(cstd.isTaxHoliday)
cstd.baseRate
else
0.01F }
calcText(100F,rate) // will get error : could not find implicit value for parameter cstd: ComplicatedSalesTaxData
你要明确的说要传参:
calcText(100F,rate(_))
您发布的错误消息表明编译器无法在当前范围内找到隐式 ComplicatedSalesTaxData
。因此你必须定义一个。
然后调用应该看起来像这样 calcText(100F,rate(_))
而不是通配符 _
你也可以明确地传递值。
该方法有一个隐式参数不能作为参数引用? 在我的代码中,我创建了一个具有隐式参数的方法。有时我只想将它转移到其他方法。这次 Scala 给我错误。见下文:
case class ComplicatedSalesTaxData(baseRate: Float,isTaxHoliday: Boolean)
def calcText(amount: Float,rate : (ComplicatedSalesTaxData) => Float ) : Float = amount * rate(ComplicatedSalesTaxData(0.06F,false))
def rate(implicit cstd:ComplicatedSalesTaxData) = {
if(cstd.isTaxHoliday)
cstd.baseRate
else
0.01F }
calcText(100F,rate) // will get error : could not find implicit value for parameter cstd: ComplicatedSalesTaxData
你要明确的说要传参:
calcText(100F,rate(_))
您发布的错误消息表明编译器无法在当前范围内找到隐式 ComplicatedSalesTaxData
。因此你必须定义一个。
然后调用应该看起来像这样 calcText(100F,rate(_))
而不是通配符 _
你也可以明确地传递值。