小编ini*_*max的帖子

Scala中的currying的好处

我想澄清有关scala currying的好处.根据"Scala第二版编程" - "currying一种用多个参数列表编写函数的方法.例如, def f(x: Int)(y: Int)带有两个参数列表的curried函数.通过传递多个参数列表来应用curried函数,如:f(3)(4).但是,也可以编写curried函数的部分应用,例如f(3)." "c"

与创建相关的一个好处是部分应用了这样的功能

def multiplyCurried(x: Int)(y: Int) = x * y 
def multiply2 = multiplyCurried(2) _
Run Code Online (Sandbox Code Playgroud)

但是我们也可以使用部分应用的函数而不用currying

def multiplyCurried(x: Int,y: Int) 
def multiply2 = multiplyCurried(2, _) 
Run Code Online (Sandbox Code Playgroud)

你能举几个例子,currying会有什么好处吗?

scala

5
推荐指数
1
解决办法
1784
查看次数

slick 3 按自定义字段插入或更新

根据API http://slick.typesafe.com/doc/3.0.0/api/#slick.driver.JdbcActionComponent $SimpleInsertActionComposer

insertOrUpdate == 如果表中不存在其主键,则插入单行,否则更新现有记录。

我可以通过自定义字段 insertOrUpdate 吗?

我通过 2 个查询解决了它

  def insertOrUpdate(name: String) = {
    Await.result(db.run(tableQ.filter(_.name === name).result), Duration.Inf).headOption match {
      case Some(t) => Unit
      case None => Await.result(db.run(tableQ += ...), Duration.Inf)
    }
  }
Run Code Online (Sandbox Code Playgroud)

可以通过 insertOrUpdate slick 做到这一点吗?

scala slick slick-3.0

5
推荐指数
0
解决办法
404
查看次数

在Scala中的Corecursion vs递归理解

例如,如果递归几乎清楚

 def product2(ints: List[Int]): Int = {
      @tailrec
      def productAccumulator(ints: List[Int], accum: Int): Int = {
          ints match {
              case Nil => accum
              case x :: tail => productAccumulator(tail, accum * x)
          }
      }
      productAccumulator(ints, 1)
  }
Run Code Online (Sandbox Code Playgroud)

我不确定核心运行.根据维基百科的文章," corecursion允许程序产生任意复杂且可能无限的数据结构,例如流 ".例如这样的构造

list.filter(...).map(...)
Run Code Online (Sandbox Code Playgroud)

使得能够准备临时流filtermap操作之后.在filterstream 之后将只收集过滤后的元素,接下来map我们将更改元素.正确?

功能组合器map filter 是否使用递归执行是否有任何正文在Scala"比较递归和核心运行"中有很好的例子?

recursion functional-programming scala function

4
推荐指数
1
解决办法
772
查看次数

如果isEmpty问题

我有关于代码装饰的问题.

例如,我应该处理来自DAO的对象

val user1 = DAO.get(token)
val user2 = DAO.get(token)
val user3 = DAO.get(token)
Run Code Online (Sandbox Code Playgroud)

接下来我应该检查user.isDefined

if (user1.isEmpty || user2.isEmpty || user3.isEmpty ) {
return "error..."
}
else {
 ... 
}
Run Code Online (Sandbox Code Playgroud)

提到的代码看起来像命令式的风格,它可以更具功能性吗?如何更改功能?

BR!

scala scala-collections

2
推荐指数
1
解决办法
143
查看次数