Scala 隐式 类 作为函数参数
Scala implicit classes as function arguments
我正在学习隐式 classes 以及如何用附加函数和定义装饰 classes。
https://coderwall.com/p/k_1jzw/scala-s-pimp-my-library-pattern-example
我的问题是,如何将这些附加函数作为参数传递给另一个函数。
示例:
我这样定义 class 和隐式函数
class BlingString(string: String) {
def bling = "*" + string + "*"
def doubleBling = "**" + string + "**"
}
implicit def blingYoString(string: String) = new BlingString(string)
现在我可以在 String 对象上使用这些函数了。
"this is one".bling // prints *this is one*
"this is two".doubleBling // prints **this is two**
我想通过将这些隐式函数传递给它来创建一个通用函数,
def blingMyString(name: String, blingFunc: ???)) = name.blingFunc
这样我就可以像下面这样使用了,
blingMyString("this is one", bling)
blingMyString("this is two", doubleBling)
这是因为我有一个 class,在 Spark Dataframe 上有 20 多个附加函数。 (数据清理、数据格式化和转换)。
根据不同的场景,我必须在数据帧上执行一个或多个函数。
val out1 = df.operation1().operation2().operation3()
val out2 = df.operation1().operation3()
val out3 = df.operation1().operation4().operation3()
def clean(dynamicFn: ???): DataFrame = df.operation1().dynamicFn().operation3()
val out1 = clean(operation2)
val out2 = clean()
val out3 = clean(operation4)
提前致谢。
class BlingString(s: String) {
def bling1 = "*" + s + "*"
def bling2 = "**" + s + "**"
}
implicit def string2bling(s: String) = new BlingString(s)
def bling(s: String, f: BlingString => String) = f(s)
bling("ciao", _.bling1)
bling("ciao", _.bling2)
我正在学习隐式 classes 以及如何用附加函数和定义装饰 classes。
https://coderwall.com/p/k_1jzw/scala-s-pimp-my-library-pattern-example
我的问题是,如何将这些附加函数作为参数传递给另一个函数。
示例: 我这样定义 class 和隐式函数
class BlingString(string: String) {
def bling = "*" + string + "*"
def doubleBling = "**" + string + "**"
}
implicit def blingYoString(string: String) = new BlingString(string)
现在我可以在 String 对象上使用这些函数了。
"this is one".bling // prints *this is one*
"this is two".doubleBling // prints **this is two**
我想通过将这些隐式函数传递给它来创建一个通用函数,
def blingMyString(name: String, blingFunc: ???)) = name.blingFunc
这样我就可以像下面这样使用了,
blingMyString("this is one", bling)
blingMyString("this is two", doubleBling)
这是因为我有一个 class,在 Spark Dataframe 上有 20 多个附加函数。 (数据清理、数据格式化和转换)。
根据不同的场景,我必须在数据帧上执行一个或多个函数。
val out1 = df.operation1().operation2().operation3()
val out2 = df.operation1().operation3()
val out3 = df.operation1().operation4().operation3()
def clean(dynamicFn: ???): DataFrame = df.operation1().dynamicFn().operation3()
val out1 = clean(operation2)
val out2 = clean()
val out3 = clean(operation4)
提前致谢。
class BlingString(s: String) {
def bling1 = "*" + s + "*"
def bling2 = "**" + s + "**"
}
implicit def string2bling(s: String) = new BlingString(s)
def bling(s: String, f: BlingString => String) = f(s)
bling("ciao", _.bling1)
bling("ciao", _.bling2)