美文网首页Swift学习
Swift 5.2 给下标设置默认值

Swift 5.2 给下标设置默认值

作者: 韦弦Zhy | 来源:发表于2020-03-07 21:06 被阅读0次

设置默认值的特性非常有用,能够极大的增加接口函数的功能性,同时又可以使得一些使用默认参数的接口非常简便。


default subscript value

Swift 中给函数参数设置默认值比如:

func registerByPhone(number: String, mobileArea: Int = 86) -> Bool 

Swift 将生成两个可调用函数,可以这样使用:

 //默认区域码为 86
registerByPhone(number: "188****8888")   

//设置区域码为10
registerByPhone(number: "188****8888", mobileArea: 10) 

在Swift中定义自定义下标的功能非常强大。它使我们能够编写非常自然和简洁的代码。但是在Swift 5.2 之前,下标值是不支持设置默认值的,比如这个带有自定义下标的Grid示例:

struct Grid {
  let items : [[GridItem]]

  subscript(x x: Int, y y: Int) -> GridItem? {
    guard !items.isEmpty, (items.startIndex...items.index(before: items.endIndex)).contains(x)
      else { return nil }

    let row = items[x]

    guard !row.isEmpty, (row.startIndex...row.index(before: row.endIndex)).contains(y)
      else { return nil }

    return row[y]
  }
}

请注意,默认情况下,下标不使用标签。要使下标使用标签,您需要像在上面的代码中一样手动声明下标标签两次(x x:Inty y:Int)。如上的下标将按以下方式使用:

let item = grid[x: 10, y: 2]

这个示例在Swift 5.1和Swift的早期版本中可以正常工作。在Swift 5.2中我们可以为下标参数提供默认值 (需要Xcode 11.4 beta 以上):

struct Grid {
  let items : [[GridItem]]

  subscript(x x: Int = 0, y y: Int = 0) -> GridItem? {
    guard !items.isEmpty, (items.startIndex...items.index(before: items.endIndex)).contains(x)
      else { return nil }

    let row = items[x]

    guard !row.isEmpty, (row.startIndex...row.index(before: row.endIndex)).contains(y)
      else { return nil }

    return row[y]
  }
}

该代码与第一个示例几乎相同,除了下标现在具有默认参数。这意味着您可以按示例这样使用下标:

let item = grid[y: 2]

这将自动为x参数调用默认值为0的下标,这个和函数的默认参数的表现形式一致。

相关文章

  • Swift 5.2 给下标设置默认值

    设置默认值的特性非常有用,能够极大的增加接口函数的功能性,同时又可以使得一些使用默认参数的接口非常简便。 Swif...

  • Swift 函数默认值的猜测

    一. 在swift函数的申明语法中,可以给参数设置默认值,代码如下: 有默认值的函数,可以省略参数的传递 调用一 ...

  • Swift 5.2 的几个新特性

    Swift 5.2 的几个新特性Swift 5.2 的几个新特性

  • Swift语法 -- [10 - 下标]

    Swift 下标 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为:下标脚本...

  • Swift 5.x - 继承(中文文档)

    引言 继续学习Swift文档,从上一章节:下标,我们学习了Swift下标相关的内容,如下标语法、下标用法、下标选项...

  • Swift 5.2 新诊断框架

    Swift 5.2 新诊断框架

  • SettingProvider.apk 6.0开发

    SettingProvider.apk 给Settings应用提供设置默认值、设置存储和设置修改服务。其源码在fr...

  • Swift:下标

    中文文档 一、下标语法 下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实...

  • Swift - 下标

    下标可以定义在类、结构体和枚举中,是访问集合,列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需...

  • Swift 下标

    让对象和结构体如同数组和字典一样使用[ ]的形式进行对象访问

网友评论

    本文标题:Swift 5.2 给下标设置默认值

    本文链接:https://www.haomeiwen.com/subject/vkbwrhtx.html