gpt4 book ai didi

scala - 如何公开模式匹配的测试

转载 作者:行者123 更新时间:2023-12-01 11:58:41 24 4
gpt4 key购买 nike

我是 scala 的新手,但基本上已经找到了自己的出路...

在这里,我要求推荐/最佳实践/惯用的实现方式:

  • 在内部,MyClass 使用一个state 类型,它由一个密封的案例类层次结构实现
  • 但在 API 上,只应公开一些 bool 谓词,这是通过与(内部)状态匹配来实现的。

目前,我的实现是沿着......

def isSane: Boolean = state match {
case Ok(_,'valid) => true
case _ => false
}

但是这个解决方案对我来说感觉很尴尬,好像用3行代码表达了一些只有一行代码的信息内容。实际上,我想写的是:

def isSane: boolean = state matches Ok(_, 'valid)

很可能/很可能可以在 scala 中自己实现一个合适的运算符,但在我研究之前,我想知道解决这个问题的通常方法是什么。也许周围还有一些现有的库实现?

最佳答案

我会做这样的事情:

abstract class State {
def matches(pf: PartialFunction[State, Unit]) = pf isDefinedAt this
}

// then

def isSane = state matches { case Ok(_,'valid) => }

因为 matches 被定义为接收部分函数,​​所以您可以在它后面跟一个函数文字,其中只包含应导致 true 的 case 语句。您不需要返回任何东西,因为部分函数被定义为返回 Unit。最后,matches方法使用偏函数的isDefinedAt方法来验证是否有case语句覆盖自身。

关于scala - 如何公开模式匹配的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3689018/

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