gpt4 book ai didi

scala - 获取 "singleton type"的类型

转载 作者:行者123 更新时间:2023-12-04 06:31:38 24 4
gpt4 key购买 nike

我们可以通过 shapeless 创建文字类型:

import shapeless.syntax.singleton._
var x = 42.narrow
// x: Int(42) = 42

但是我该如何操作 Int(42)作为一种类型,如果甚至不可能创建类型别名
type Answ = Int(42) // won't compile
// or
def doSmth(value: Int(42)) = ... // won't compile

最佳答案

1) 在 Typelevel Scala你可以只写

val x: 42 = 42

type Answ = 42

def doSmth(value: 42) = ???

2) 在 Dotty Scala 你也可以这样写。

3) 在 Lightbend Scala (即标准Scala)+你可以写的无形
import shapeless.Witness
import shapeless.syntax.singleton._

val x: Witness.`42`.T = 42.narrow

type Answ = Witness.`42`.T

def doSmth(value: Witness.`42`.T) = ???

如果 1) build.sbt 应该是
scalaOrganization := "org.typelevel"
scalaVersion := "2.12.3-bin-typelevel-4"
scalacOptions += "-Yliteral-types"

在情况 2) build.sbt 应该是
scalaOrganization := "ch.epfl.lamp"
scalaVersion := "0.3.0-RC2"

和 plugins.sbt
addSbtPlugin("ch.epfl.lamp" % "sbt-dotty" % "0.1.5")

在情况 3) build.sbt 应该是
scalaOrganization := "org.scala-lang"
scalaVersion := "2.12.3"
libraryDependencies += "com.chuusai" %% "shapeless" % "2.3.2"

4) 或者您可以同时使用 Typelevel Scala 和 Shapeless。

关于scala - 获取 "singleton type"的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46181854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com