Clojure有“线程宏”->
和->>
。我很确定在Scala代码中可以使用类似的构造来替换代码:
var myObj = MyObject(x, y, z)
myObj = transform(myObj, abc)
myObj = transformMore(myObj, def)
myObj = transformYetMore(myObj, bar)
我希望看到一个可行的例子,看看它是否看起来不错。我很确定你不需要在Scala案例中使用宏。
答案 0 :(得分:-1)
clojure中的线程宏用于解决过度嵌套表达式的问题,因此在scala中使用某种线程实用程序是非常罕见的(虽然原则上可以像Stefan提到的那样)因为普通的集合函数很好< / p>
def square(x: Int) = x * x
def plusOne(x: Int) = x + 1
List(1,2,3,4).map(square).map(plusOne)
甚至是冗长的:
someCollection.map(...)
.flatMap(...)
.filter(...)
.map(...)
...
另一种选择是理解(对期权和期货更有用)。如果您对此不满意,则不需要使用宏,此类构造上有很多博客文章,例如this one