Swift学习之每日一tip (4)版本对比与一些小技巧

来源:互联网 发布:如何查看电脑mac地址 编辑:程序博客网 时间:2024/04/30 04:39

首先,非常抱歉,昨天本来说是今天要给大家写一下1.1版本和1.2版本之间的区别的。但是,在整理后,1.2增加的许多功能网上早已经有人提出过了,所以这里就不占用大家的时间了,想知道的直接百度就可以了。
今天呢,小汤我就把我在编码中遇到的1.1的语法在1.2下冲突的一些小例子列举一下,并且给大家介绍一下swift中下划线与#号的一些小技巧吧。

1.1版本与1.2版本几个常见冲突:

  1. 数组的表示
    1.1版本下:let emptyArray = String
    1.2版本下:let emptyArray = String

  2. for循环
    1.1版本下:for i in 0..3 {
    }
    1.2版本下:for i in 0..<3 {
    }

  3. 枚举类型的原始值调用方法
    1.1版本:toValue
    1.2版本:rawValue

  4. 排序方法名
    1.1 sort
    1.2 sorted

这几个是我在测试的过程中发现的几个常见的小冲突,肯定还有一些没有列举出来的,但是想来应该不多了,有找到其他冲突的大牛们,希望能够回复告知一下。

因为今天的内容写的实在过于无聊,想了想又决定添上几个小技巧。

“_”与“#”的一些小技巧

在Swift中,下划线和”#”有很多妙用,这里将已经看到的妙用进行总结,希望可以帮助更多学习Swift的朋友。下面先介绍下划线。

  1. 格式化数字字面量
    通过使用下划线可以提高数字字面量的可读性,例如:

    let a = 123.000_001   let b = 1_000_000   
  2. 忽略元组的元素值
    当我们使用元组时,如果有的元素不需要使用,这时可以使用下划线将相应的元素进行忽略,例如:

    let http404Error = (404, "Not Found")   let (_, error) = http404Error  

    代码中,只关心http404Error中第二个元素的值,所以第一个元素可以使用下划线进行忽略。

  3. 忽略区间值

    let base = 3   let power = 10   var answer = 1   for _ in 1...power {       answer *= base   }  

    有时候我们并不关心区间内每一项的值,可以使用下划线来忽略这些值。

  4. 忽略外部参数名
    在使用方法(类方法或者实例方法)时,方法的第二个参数名及后续的参数名,默认既是内部参数名,又是外部参数名,如果不想提供外部参数名,可以在参数名前添加下划线来忽略外部参数名。

    //函数定义      private func addChildViewController(sbName: String, title: String, imageName: String) {}//函数调用效果addChildViewController(<#sbName: String#>, title: <#String#>, imageName: <#String#>)

在上面的代码中,函数addChildViewController中有两个带外部参数名的项,如果不想使用外部参数名可以使用下划线进行忽略,代码可以写为(不过为了提高代码的可读性,一般不进行忽略):

    //函数定义    private func addChildViewController(sbName: String, _ title: String, _ imageName: String) {}    //函数调用时的效果    addChildViewController(<#sbName: String#>, <#title: String#>, <#imageName: String#>)


5. 配置外部参数名

在swift函数中,第二个及后续的参数,默认是具有和内部参数一致的外部参数名的,只有第一个参数没有,可以使用”#”符号来强制给第一个参数添加与本地参数名一致的外部参数名。

//函数定义          private func addChildViewController(#sbName: String, title: String, imageName: String) {}//函数调用效果    addChildViewController(sbName: <#String#>, title: <#String#>, imageName: <#String#>)
0 0
原创粉丝点击