小编enh*_*ull的帖子

Scala中无点样式的情况

对于这里的FP认知来说,这看起来真的很明显,但Scala中的点自由风格有什么用呢?在这个主题上真正卖给我的是一个插图,它显示了点自由风格在某些方面(例如性能,优雅,可扩展性,可维护性)如何在非点自由风格中解决相同问题的代码.

functional-programming scala pointfree

22
推荐指数
2
解决办法
2506
查看次数

匹配Scala中列表的第n个元素

将值与列表的第n个元素匹配的最佳Scala习惯用法是什么?

天真的方法显然不起作用:

scala> val list = List(5,6,7)
list: List[Int] = List(5, 6, 7)

scala> val x = 7
x: Int = 7

scala> x match { case list(2) => true; case _ => false }
<console>:10: error: value list is not a case class constructor, nor does it have an       unapply/unapplySeq method
   x match { case list(2) => true; case _ => false }
Run Code Online (Sandbox Code Playgroud)

为了澄清 - 这个问题不是关于如何将值与列表的第n个元素进行比较 - 具体是关于是否可以使用匹配来完成.

scala

8
推荐指数
1
解决办法
3024
查看次数

Scala:如何编写将返回对象的方法写入接收器的实现类型

我知道在Scala中不推荐使用case类继承,但为了简单起见,我在下面的例子中使用了它:

scala> case class Foo(val f: String) { def foo(g: String): Foo = { this.copy(f=g) }}
defined class Foo

scala> case class Bar(override val f: String) extends Foo(f)
warning: there were 1 deprecation warnings; re-run with -deprecation for details
defined class Bar

scala> Bar("F")
res0: Bar = Foo(F)

scala> res0.foo("G")
res1: Foo = Foo(G)
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.但是,我真正想要的是能够foo()在Foo中编写一个方法,当在类型为Bar的对象上调用时返回Bar类型的对象,而不必重新实现类Bar中的方法.有没有办法在Scala中执行此操作?

scala

5
推荐指数
2
解决办法
6254
查看次数

标签 统计

scala ×3

functional-programming ×1

pointfree ×1