小编jvl*_*nag的帖子

如何定义输出类型取决于输入类型的函数

鉴于以下课程:

case class AddRequest(x: Int, y: Int)
case class AddResponse(sum: Int)
case class ToUppercaseRequest(str: String)
case class ToUppercaseResponse(upper: String)
Run Code Online (Sandbox Code Playgroud)

如何以类型安全的方式定义一些函数:

def process(req: ???): ???
Run Code Online (Sandbox Code Playgroud)

这样以下内容应该成立:

val r1: AddResponse = process(AddRequest(2, 3))
val r2: ToUppercaseResponse = process(ToUppercaseRequest("aaa"))
Run Code Online (Sandbox Code Playgroud)

此外,下面的应该不会编译:

val r3 = process("somestring")
Run Code Online (Sandbox Code Playgroud)

types scala shapeless

18
推荐指数
1
解决办法
1775
查看次数

Rebase on github branch

说我做了以下步骤:

  • fork一些项目,创建一个主题分支
  • 在GitHub上推动那个分支
  • 请求从该分支拉到原始项目

但是,我得到一些评论来改进代码的内容.

  • 我修复了代码,做了提交
  • Rebase来压制旧提交

问题是,我不能再把它推到GitHub上的主题分支了.

那么处理这个问题的最佳方法是什么?

git github git-rebase

14
推荐指数
1
解决办法
5876
查看次数

将远程标记添加到泊坞窗图像

在私人注册表(myregistry.com)上,假设我的图像标记为'v1.2.3'.然后我推动它:

docker push myregistry.com/myimage:v1.2.3

如果我想关联另一个标签,说'staging',并将该标签推送到我的注册表,我可以:

docker tag myregistry.com/myimage:v1.2.3 myregistry.com/myimage:staging docker push myregistry.com/myimage:staging

虽然这有效,但第二个docker push仍然会遍历每个图像,试图推送它(尽管跳过上传).有没有更好的方法来添加远程标签?

docker

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

如何在测试环境中检查sbt?

应用程序如何判断它是否在'sbt test'上下文中运行?是否有可以检查的系统属性?

testing scala sbt

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

具有预安装扩展的Chromium

如何创建和分发自定义Chromium Web浏览器?它应该与Google版本相同,只是预安装了一些扩展程序.它仍然应该从chrome稳定通道获得更新.

google-chrome google-chrome-extension

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

编译时检查某些属性

给出以下 scala 代码:

sealed trait Color
case object Red extends Color
case object Blue extends Color

sealed trait Car {
  def isBroken: Boolean
  def color: Color
}
Run Code Online (Sandbox Code Playgroud)

我如何定义这样的方法:

def fixBrokenRedCar(c: A): B
Run Code Online (Sandbox Code Playgroud)

也就是说,应该A是什么BRed该方法应该只接受同时为 和 的Car isBroken = true。否则它应该发出编译错误。此外,输出B应该包含有关其类型的信息,这样如果我创建另一个方法destroyRedCar(c: B)并将其应用于输出,它应该进行相应的编译。

types scala

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