如何匹配多个参数?

发布于 2024-10-25 04:08:20 字数 355 浏览 4 评论 0原文

我有一个功能:

def func(a: int, b: int, c: double): int

并且我想匹配各种可能的场景,

  1. c为0时,返回ba
  2. c>为0时,返回ba。 9、return 0
  3. 凡是a=b都return 0

依此类推,如果以上都不满足的话,再做一些更复杂的逻辑。

我是否必须先单独匹配 c,还是可以像 _,_,0 一样匹配 a,b,c?

I have a function:

def func(a: int, b: int, c: double): int

And I want to match various possible scenarios

  1. Wherever c is 0, return b-a
  2. Wherever c > 9, return 0
  3. Wherever a=b return 0

And so on, before doing some more complex logic if none of the above are satisfied.

Do I have to match c separately first, or can I match on a,b,c, like _,_,0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

笑叹一世浮沉 2024-11-01 04:08:20

您可以对所有描述的情况进行模式匹配,如下所示:

def func(a: Int, b: Int, c: Double) = (a, b, c) match {
    case (a, b, 0) => b - a
    case (a, b, c) if c > 9 || a == b => 0
    case _ => 1 // add your logic here
}

You can pattern match all described cases like this:

def func(a: Int, b: Int, c: Double) = (a, b, c) match {
    case (a, b, 0) => b - a
    case (a, b, c) if c > 9 || a == b => 0
    case _ => 1 // add your logic here
}
土豪我们做朋友吧 2024-11-01 04:08:20

从我对 Easy Angel 的回答的评论来看,我仍然觉得这

if (c == 0)
   b -a
else if (c > 9)
   0
else if (a == b)
   0
else 
   1 // your logic here

更清楚了。基本上是因为这里实际上没有任何模式可以匹配。

Following on from my comments to Easy Angel's answer, I still feel this

if (c == 0)
   b -a
else if (c > 9)
   0
else if (a == b)
   0
else 
   1 // your logic here

is clearer. Basically because there isn't really any pattern to match here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文