首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在case语句中键入带注释的元组模式?

在case语句中键入带注释的元组模式?
EN

Stack Overflow用户
提问于 2022-03-14 21:14:27
回答 1查看 66关注 0票数 1

我希望有类型注释(因此类型受限,除非我误解)模式匹配,如下所示:

代码语言:javascript
复制
func F<T1, T2>(_ t: (T1, T2)) {
  switch t {
  case let (x: Int, y: String):
    // do something
  default:
    // do something else
  }
}

但是我显然做错了什么,因为我在Tuple pattern element label 'x' must be '_'行上得到了一个case let (x: Int, y: String):编译器错误。

case let (x, y):工作,但无法匹配类型(xy绑定到任何类型)。

查看Swift编程语言(SWIF5.6beta)中的语法,

代码语言:javascript
复制
<case> <pattern>:
<case> <value-binding-pattern>:
<case> let <pattern>:
<case> let <tuple-pattern> <type-annotation opt>:
<case> let (<tuple-pattern-element-list>) <type-annotation opt>:
<case> let (<tuple-pattern-element-list>) <type-annotation opt>:
<case> let (<tuple-pattern-element>, <tuple-pattern-element>) <type-annotation opt>:
<case> let (<tuple-pattern-element>, <tuple-pattern-element>) <type-annotation opt>:
<case> let (<pattern>, <pattern>) <type-annotation opt>:
<case> let (<identifier-pattern>, <identifier-pattern>) <type-annotation opt>:
<case> let (<identifier>, <identifier>) <type-annotation opt>:
...

所以我觉得这样说也没问题

代码语言:javascript
复制
func F<T1, T2>(_ t: (T1, T2)) {
  switch t {
  case let (x, y) : (Int, String):
  ...

但我所有这样的尝试都以这样或那样的方式不幸地失败了(不要编译)。

在元组项值被绑定并且我也可以约束元组元素的类型的情况下,有什么正确的方法来完成这种匹配?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-14 21:21:36

语法是:

代码语言:javascript
复制
func F<T1, T2>(_ t: (T1, T2)) {
   switch t {
   case let (x, y) as (Int, String):
      // do something
   default:
      // do something else
   }
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71474328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档