- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个 Int
值的类型级别表示,存储如下:
sealed trait Position {
def value : Int
}
class P1 extends Position {val value = 1}
class P2 extends Position {val value = 2}
当一个类扩展它时:
case class PExtended() extends P1
我想在类型级别检索值:
def getValue[A <: Position] = ???
getValue[PExtended] //should return 1
我尝试了一些方法,但不确定这是否是解决此问题的最佳方法。任何关于如何开始的建议都会很棒。
最佳答案
需要实现一个类型类,使用Shapeless Nat numbers来解决问题:
import shapeless.ops.nat.ToInt
import shapeless.Nat
import shapeless.ops.nat.ToInt
trait Number[A] {
def number: Int
}
object Number {
def apply[A](implicit number: Number[A]): Number[A] = number
implicit def positionNumber[A, N <: Nat](implicit eq: A <:< Position[N], toInt: ToInt[N]): Number[A] = {
new Number[A] {
override def number: Int = toInt.apply()
}
}
}
然后你就可以用它来实现你的方法了
sealed trait Position[T <: Nat]
class P1 extends Position[Nat._1]
class P2 extends Position[Nat._2]
object Test extends App {
case class PExtended() extends P1
def getValue[A](implicit number: Number[A]): Int = {
number.number
}
println(getValue[PExtended])
}
关于scala - 类型类 : maintain value at type level,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868912/
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 3年前关闭。 Improve this
作为我不久前写的代码标准文档的一部分,我强制要求“您必须始终对循环和/或条件代码块使用大括号,即使(尤其是)它们只有一行。” 例子: // this is wrong if (foo) //b
我们正在创建一个大项目,该项目将持续存在并改进大约 10 年。 在我们的代码库中,已经有很多针对特定浏览器不兼容性的代码、针对浏览器中不同错误的解决方法、3rd 方工具和库等。代码本身通常运行良好,但
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 7年前关闭。 Improve t
感谢您花时间查看我的问题! 假设有一个 Web 服务(restful、SOAP、XML/JSON,无论你想要什么),并且它是一个关于小狗的服务。就本问题而言,小狗可以有两个成员变量。第一个是小狗的唯一
我的类经常有一些属性,而其他对象的属性依赖于这些属性。定义和访问它们的最佳方式是什么?一个最小的例子应该可以解释我的问题。 假设我有一个定义圆的类: class Circle: def __i
在一个应用程序中,我正在逐个读取无向图的顶点,只有当两个顶点都出现时,边才会变得明显。 解析后,我需要快速地逐一迭代图的连通分量。我选择什么算法来在解析时构建连接的组件? (在解析时,因为列出边相当昂
我目前正在将一个 API 从 C# 转换为具有网络组件的 Java。 C# 版本似乎在其类被使用期间保持输入和输出流以及套接字打开。 这是正确的吗? 请记住,应用程序根据用户输入发送命令和接收事件,为
在座的每一位可能对 Googlebot 的工作原理有一定了解的人都可能清楚地看到启动页面会损害网站的 SEO 性能。 但是,我碰巧正在处理一个相当不幸的案例,即必须为我的一个客户实现启动页面。你如何在
我正在尝试使用一些 iPhone Core Data 代码来调试一个非常邪恶的问题。 设置是这样的:我有一个线程来轮询Web服务并通过NSNotification将其结果发送到主线程(在userDic
我正在尝试通过开发类似 Web 应用程序的服务来更加熟悉 Haskell。 假设我正在开发一个网络服务器,并且我想在请求之间保持持久状态;例如,计数器。 Haskell 的做事方式是什么? 我遇到了这
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
所以我尝试为 List 创建一些基本的扩展方法。本质上我有一个 UniqueAdd 和 UniqueAddRange。它会在添加之前检查一个值是否存在,如果它已经在列表中,它就不会添加它。这是代码:
考虑一个具有可比较字段(与 equals 一致)和不可比较字段(我不知道它是否覆盖 Object#equals 的类)的类。 应比较类的实例,其中结果顺序应与相等一致,即 0 返回 iff 两个字段相
我试图将页脚设置在页面底部,并且我设法使用 CSS 属性“position:fixed”和“bottom:0”做到了这一点。但是,通过这样做,我的两个页脚 DIV 之间不再有空格。我一直在解决这个问题
目标:通过一个连接和多个 session 或一个持久 session 远程控制 ssh 服务器。 问题 1:我目前使用 sshj 通过 SSH 进行一些远程控制,它运行良好,但我似乎无法让它正确处理提
我有一个 Controller ,其中包含一些私有(private)只读接口(interface)属性,它需要这些属性才能通过调用服务来获取数据,然后用于填充模型等 private readonly
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 5 年前。 Improve
我 fork 了一个上游仓库,克隆了它,并创建了一个分支来处理一些事情 完成分支编码后,我创建了一个 merge 请求。但是在页面上有一个复选框“允许维护者编辑”? 这是什么意思?这是否意味着上游
我正在将 Kohana v3 用于 Web 项目,今天我发现自己在写这个: echo Html::anchor('user/view/'.$user->id, "See user's profile"
我是一名优秀的程序员,十分优秀!