小编Val*_*Dia的帖子

斯卡拉(Scala):如何在字面上避免反引号?

Scala中的文字允许定义此答案所描述的标识符。有没有办法在字面量中转义反引号`?做类似的事情:

 val `hello `world` = "hello world"
Run Code Online (Sandbox Code Playgroud)

更新
为此,其中一种用例是将精炼库用于与包含反引号的正则表达式匹配的某些精炼类型,例如:

  import eu.timepit.refined._
  import eu.timepit.refined.api.Refined

  type MatchesRegexWithBacktick = String Refined MatchesRegex[W.`(a|`)`.T]
Run Code Online (Sandbox Code Playgroud)

scala literals

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

使用 axios.interceptors 获取新令牌

当令牌过期时,我想根据refresh_token 获取一个新令牌。我已经读到这可以通过axios.interceptors.

请检查是否:

  • 我是否正确配置了 axios.interceptors?
  • 我是否将它放在正确的位置,即在Items班级上方。
  • axios.interceptors.response分配给interceptor变量。我应该如何处理这个变量?

除了`axios.interceptors',我还需要一个新的令牌。令牌的有效期为 24 小时。

  • 我是否必须等待 24 小时才能测试它是否有效,或者是否有可能以不同的方式更快?
  • 我应该把“client_id”、“secret_id”、“grant_type”放在哪里?

代码在这里:https : //stackblitz.com/edit/react-pkea41

import axios from 'axios';

axios.defaults.baseURL = localStorage.getItem('domain');

const interceptor = axios.interceptors.response.use(
  response => response,
  error => {
      // Reject promise if usual error
      if (errorResponse.status !== 401) {
          return Promise.reject(error);
      }

      /* 
       * When response code is 401, try to refresh the token.
       * Eject the interceptor so it doesn't loop in case
       * token …
Run Code Online (Sandbox Code Playgroud)

javascript oauth reactjs axios

6
推荐指数
1
解决办法
1万
查看次数

斯卡拉:除以零

我的应用程序中有这样的东西:

def something(x: Int, y: Int) Z {

    (x / y)
}
Run Code Online (Sandbox Code Playgroud)

现在,如果someval不是数字(意味着x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException: Division by zero])

我知道我能做到:

Try(someVale) orElse Try(0)
Run Code Online (Sandbox Code Playgroud)

但是,这会给我,Success(0)而我只是想0在这种情况下给我一个.

也许if ArithmeticException then 0在Scala中有类似的东西可以删除"成功"和括号.有人可以解决一些问题吗?

scala divide-by-zero

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

什么是scalaz的Cohoist?

所述scalaz限定Cohoist

  trait Cohoist[F[_[_], _]] extends ComonadTrans[F] {
    def cohoist[M[_], N[_]: Comonad](f: M ~> N): F[M, ?] ~> F[N, ?]
  }
Run Code Online (Sandbox Code Playgroud)

在哪里ComonadTrans定义:

 trait ComonadTrans[F[_[_], _]] {
   def lower[G[_]: Cobind, A](a: F[G, A]): G[A]
 }
Run Code Online (Sandbox Code Playgroud)

问题是如何治疗这种类型?有人可以用几句话解释一下还是举一个例子?

scala scalaz comonad

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

使用circe-optics递归遍历JSON

我有一个json复杂的结构。像这样的东西:

{
  "a":"aa",
  "b":"bb",
  "c":[
    "aaa",
    "bbb"
  ],
  "d":{
    "e":"ee",
    "f":"ff"
  }
}
Run Code Online (Sandbox Code Playgroud)

我想大写所有字符串值。文档说:

root.each.string.modify(_.toUpperCase)
Run Code Online (Sandbox Code Playgroud)

但正如预期的那样,只更新了根值。

如何circe-optics递归遍历所有字符串值?
JSON结构事先未知。

这是关于 Scastie的例子


通过评论:我希望所有字符串值都大写,而不仅仅是根值:

{
  "a":"AA",
  "b":"BB",
  "c":[
    "AAA",
    "BBB"
  ],
  "d":{
    "e":"EE",
    "f":"FF"
  }
}
Run Code Online (Sandbox Code Playgroud)

scala circe

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

抛出异常在future.map scala 中不起作用?

def testThrowException(number: Int): Future[Int] = {
 if (number == 0) {
     throw new Exception("number is 0")
 else {
     Future{1}
 }
Run Code Online (Sandbox Code Playgroud)

对于上述函数,如果我用 testThrowException(0) 调用它,我可以看到控制台中打印的异常错误消息,但如果我执行类似的操作

def testThrowException(number: Int): Future[Int] = {
anotherFuture.map {
    if (number == 0) {
        throw new Exception("number is 0")
    } else {
        1
    }
}
Run Code Online (Sandbox Code Playgroud)

我看不到控制台中打印的异常,但是如果我执行 testThrowException.onFailure,我可以看到失败消息,我在这里做错了什么吗?为什么不打印出异常

scala future

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

在Postgres中正确存储数百万个电话号码

我正在开发一个专注于有关电话号码的元信息的项目.

使用postgres,我们将使用数百万个电话号码为数据库播种,我担心存储此信息的最佳方式.

现在我一直在考虑一个phones表格,每行代表一个字符串的电话号码.然后简单地加入......如下所示:

+-----------------------+             +-----------------------+
|     phone_numbers     |             |     phones            |
+-----------------------+             +-----------------------+
| id: integer           +-------+     | id: integer           |
| digits: string        |       |     |                       |
|                       |       +-----+ phone_number: integer |
|                       |             |                       |
|                       |             |                       |
|                       |             |                       |
+-----------------------+             +-----------------------+
Run Code Online (Sandbox Code Playgroud)

如何根据电话号码的存储设计数据库架构?

sql database postgresql types phone-number

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

在http4s中发送JSON响应的正确方法是什么?

不久前,我从akka-http切换到http4s。我想要正确执行的基本操作之一-JSON处理,尤其是发送JSON响应。

我决定在ZIO中使用http4s而不是cat,因此这是http路由的样子:

import fs2.Stream
import org.http4s._
import org.http4s.dsl.io._
import org.http4s.implicits._
import scalaz.zio.Task
import scalaz.zio.interop.catz._
import io.circe.generic.auto._
import io.circe.syntax._

class TweetsRoutes {

  case class Tweet(author: String, tweet: String)

  val helloWorldService = HttpRoutes.of[Task] {
    case GET -> Root / "hello" / name => Task {
      Response[Task](Ok)
        .withBodyStream(Stream.emits(
          Tweet(name, "dummy tweet text").asJson.toString.getBytes
        ))
    }
  }.orNotFound

}
Run Code Online (Sandbox Code Playgroud)

如您所见,JSON序列化部分非常冗长:

.withBodyStream(Stream.emits(
  Tweet(name, "dummy tweet text").asJson.toString.getBytes
))
Run Code Online (Sandbox Code Playgroud)

还有其他方法可以在响应中发送JSON吗?

scala http4s zio

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

函数式编程中的 Store Comonad 和 Representable Store Comonad 有什么区别?

Representable Store Comonad 和 Store Comonad 提供了类似的功能......我们什么时候应该使用一个而不是另一个,有什么好处?

haskell functional-programming scala scalaz comonad

3
推荐指数
1
解决办法
293
查看次数

真正的动作是什么?

val echo = Action { request =>
  Ok("Got request [" + request + "]")
}
Run Code Online (Sandbox Code Playgroud)

看来Action是一个函数,只有一个函数类型参数,它的类型是Request [A] => Result

在文档中:https : //www.playframework.com/documentation/2.7.x/api/scala/play/api/mvc/Action.html

它告诉我Action是一个特质:

trait Action[A] extends EssentialAction
Run Code Online (Sandbox Code Playgroud)

“动作本质上是处理请求并生成要发送到客户端的结果的(Request [A] => Result)函数。”

那么行动到底是什么?功能还是特质?

scala playframework

3
推荐指数
1
解决办法
49
查看次数