小编Cla*_*ion的帖子

可以在 Cats-Effects 中使用“unsafeRunSync()”吗?

我正在使用 Doobie,在我发现的示例中,它使用unsafeRunSync,例如:

sql"select name from country"
  .query[String]    // Query0[String]
  .to[List]         // ConnectionIO[List[String]]
  .transact(xa)     // IO[List[String]]
  .unsafeRunSync    // List[String]
  .take(5)          // List[String]
  .foreach(println)
Run Code Online (Sandbox Code Playgroud)

在底层,该函数的实现如下:

final def unsafeRunSync(): A = unsafeRunTimed(Duration.Inf).get
Run Code Online (Sandbox Code Playgroud)

在文档中,我发现“请注意,此函数用于测试;它永远不应该出现在您的主线生产代码中!”。我想知道如果它unsafeRunSync在幕后使用这个功能,那么在生产中使用是否可以?

另外,如果不使用,如何设置执行超时unsafeRunTimed

scala scala-cats doobie cats-effect

7
推荐指数
1
解决办法
2855
查看次数

在 Scala 中使用隐式的良好实践

是否有任何客观原因可以/不在代码中到处使用隐式参数只是为了缩短应该传递的参数数量

我有一个 REST API。端点的每个调用都有一个唯一的 id,应该在调用触发的每个函数中逐字传递以进行调试。消除参数显式传递的第一个想法是使其成为每个函数中的隐式参数。但是,我的直觉告诉我,这是对隐式的误用(尽管我没有明确的论据不这样做)。

这种方法是否可以通过便利推理来证明,其中增益仅删除单个参数并假设对于像我这样的情况是一种很好的做法?

scala implicit

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

在 Scala 中查找自由端口的优雅方法

我重新编写了 Java 代码,找到了一个免费端口,我在这里找到了 => https://gist.github.com/vorburger/3429822#file-gistfile1-java以在 Scala 中使用

def findFreePort(): Int = {
    var ss: ServerSocket = null

    try {
      ss = new ServerSocket(0)
      ss.getLocalPort
    } finally {
      ss.close()
    }
  }
Run Code Online (Sandbox Code Playgroud)

然而,将 var 分配给 看起来非常难看null。有更好的方法吗?

scala

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

标签 统计

scala ×3

cats-effect ×1

doobie ×1

implicit ×1

scala-cats ×1