如何在 Scala 中以流式设计函数
How to design function in flow style in scala
假设我有一个具有两个函数的 util 对象
object t {
def funA(input:String,x:Int):String = "hello"*x
def funB(input:String,tail:String):String = input + ":" + tail
}
如果我运行
funB(funA("x",3),"tail")
我得到结果=xxx:tail
问题是如何设计这两个函数,然后我可以像这样以流式调用它们:
"x" funA(3) funB("tail")
扩展字符串,使用隐式 class,
implicit class CustomString(str: String) {
def funcA(count:Int) = str * count
def funB(tail:String):String = str + ":" + tail
}
println("x".funcA(3).funB("tail"))
对于带有 String
字段(对应于原始函数的第一个参数)的案例 class,
case class StringOps(s: String) {
def funA(x:Int):String = s*x
def funB(tail:String):String = s + ":" + tail
}
以及将 String
转换为 StringOps
、
的隐式
implicit def String2StringOps(s: String) = StringOps(s)
您可以启用以下用法,
scala> "hello" funA 3
hellohellohello
scala> "hello" funA 3 funB "tail"
hellohellohello:tail
假设我有一个具有两个函数的 util 对象
object t {
def funA(input:String,x:Int):String = "hello"*x
def funB(input:String,tail:String):String = input + ":" + tail
}
如果我运行
funB(funA("x",3),"tail")
我得到结果=xxx:tail
问题是如何设计这两个函数,然后我可以像这样以流式调用它们:
"x" funA(3) funB("tail")
扩展字符串,使用隐式 class,
implicit class CustomString(str: String) {
def funcA(count:Int) = str * count
def funB(tail:String):String = str + ":" + tail
}
println("x".funcA(3).funB("tail"))
对于带有 String
字段(对应于原始函数的第一个参数)的案例 class,
case class StringOps(s: String) {
def funA(x:Int):String = s*x
def funB(tail:String):String = s + ":" + tail
}
以及将 String
转换为 StringOps
、
implicit def String2StringOps(s: String) = StringOps(s)
您可以启用以下用法,
scala> "hello" funA 3
hellohellohello
scala> "hello" funA 3 funB "tail"
hellohellohello:tail