如何从TypeClass解析中排除特定类型?

我想ToCondition为大多数类型提供操作,但不为字符串提供操作。(这是在移植Javascript代码时,非空和非零测试经常执行,并且重写所有此类测试以进行适当的比较繁琐)。这样做很容易,所以我收到一个错误运行时:

trait ToCondition[T] {
  def apply(x: T): Boolean
}
implicit object ToConditionInt extends ToCondition[Int] {
  override def apply(x: Int) = x != 0
}
implicit object ToConditionString extends ToCondition[String] {
  override def apply(x: String) = throw new UnsupportedOperationException("Cannot use String as a condition")
}
implicit object ToConditionAnyRef extends ToCondition[AnyRef] {
  override def apply(x: AnyRef) = x != null
}

def toCondition[T: ToCondition](a: T): Boolean = implicitly[ToCondition[T]].apply(a)

toCondition(1) // true

toCondition(null:AnyRef) // false

toCondition("") // throws runtime

可以以某种方式表达此约束,以便获取错误编译时间吗?

KrzysztofAtłasik

您可以对条件使用广义类型约束,该约束永远不会成立,例如String =:= Nothing

implicit def ToConditionString(implicit ev: String =:= Nothing) = new ToCondition[String] {
  override def apply(x: String) = throw new UnsupportedOperationException("Cannot use String as a condition")
}

然后

toCondition("")

在编译时由于以下原因而失败:

找不到类型为ToCondition [String]的证据参数的隐式值

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从JSON序列化中排除特定类型

来自分类Dev

如何在Python中排除输入变量的特定类型?

来自分类Dev

从全局环境中排除特定的对象类型

来自分类Dev

如何从其他类型中排除{}?

来自分类Dev

如何从数组中排除特定ID?

来自分类Dev

如何在SQL中排除特定记录?

来自分类Dev

Gradle:如何从罐子中排除特定包装?

来自分类Dev

如何从数据框中排除特定的行?

来自分类Dev

如何从SQL计数中排除特定的行

来自分类Dev

如何从比赛中排除特定单词?

来自分类Dev

如何从R的glm中排除特定变量?

来自分类常见问题

从类型中排除属性

来自分类Dev

如何从Maven解析器中排除persistence.xml

来自分类Dev

如何从解析 gulp 中排除 node_modules 的许多目录?

来自分类Dev

如何在Hybris灵活搜索中排除子类型

来自分类Dev

如何在find,exec和grep中排除文件类型?

来自分类Dev

如何从查询结果中排除特定的行ID?

来自分类Dev

如何在querySelectorAll()中排除特定的类名?

来自分类Dev

如何从ImageIO中排除特定的TIFF阅读器?

来自分类Dev

WooCommerce:如何在挂钩操作中排除特定页面

来自分类Dev

如何从通配符域(Nginx)中排除特定子域

来自分类Dev

gradle,如何在风味构建apk中排除特定类别

来自分类Dev

如何在Python中排除或删除特定部分

来自分类Dev

如何使用pgbackrest在postgres备份中排除特定表?

来自分类Dev

如何从find命令中排除特定目录的子目录?

来自分类Dev

GoogleBigQuery如何从联合查询的特定列中排除空值?

来自分类Dev

WooCommerce:如何在挂钩操作中排除特定页面

来自分类Dev

如何从正则表达式中排除特定模式?

来自分类Dev

如何从包含特定参数的过程计数中排除结果?

Related 相关文章

热门标签

归档