如何使用单个参数调用Scala函数并首先写入参数

时间:2017-12-12 15:29:15

标签: scala

我有一些代码可以转换具有不同功能的序列元素:

someSequence map converterFunction

但是,有时我没有序列,只有一个值要传递给函数。为了与其他行保持一致,我想像那样编写

someValue applyTo converterFunction

所以在某种程度上它就像映射单个值一样。当然我可以用函数调用函数,我只是想知道是否可以按照我提出的方式编写函数。

2 个答案:

答案 0 :(得分:2)

我同意ChrisK的看法,这个想法在代码可读性方面听起来不是一个好主意,但如果你真的想要它,你可以用这样的东西来做:

implicit final class MapAnyOp[T](val value: T) extends AnyVal {
  def map[R](f: T => R) = f(value)
}

def convert(v: Int): String = Integer.toHexString(v)

println(List(123, 234, 345) map convert)
println(123 map convert)

答案 1 :(得分:1)

你可以将它包装在Seq:

Seq(someValue) map converterFunction

如果 someValue 是一个自定义类型/类,您可以定义一个操作符,为您执行此操作,而不是显式包装。

someValue.seq map converterFunction