zoukankan      html  css  js  c++  java
  • 基本运算符中Swift和Java的比较

    1. 在Swift和Java基本运算符语法中,赋值运算符、算术运算符、求余运算符、自增和自减运算、一元负号运算符、一元正号运算符、逻辑运算、比较运算符、三目运算符(Ternary Conditional Operator)等这些运算符用法大同小异,接近相同,就不在分析了,下面对一些Swift中特有的语法进行分析。

    2. 空合运算符

    空合运算符(Nil Coalescing Operator):空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b.这个运算符有两个条件:

    • 表达式a必须是Optional类型
    • 默认值b的类型必须要和a存储值的类型保持一致

    下文例子采用空合并运算符,实现了在默认颜色名和可选自定义颜色名之间抉择,代码如下:

    let defaultColorName = "red"
    var userDefinedColorName:String?   //默认值为nil
    var colorNameToUse = userDefinedColorName ?? defaultColorName
    //userDefinedColorName的值为空 ,所以colorNameToUse的值为`red`

    userDefinedColorName变量被定义为一个可选字符串类型,默认值为nil。由于userDefinedColorName是一个可选类型,我们可以使用空合运算符去判断其值。在上一个例子中,通过空合运算符为一个名为colorNameToUse的变量赋予一个字符串类型初始值。 由于userDefinedColorName值为空,因此表达式userDefinedColorName ?? defaultColorName返回默认值,即red

    另一种情况,分配一个非空值(non-nil)给 userDefinedColorName,再次执行空合运算,运算结果为封包在userDefaultColorName中的值,而非默认值,代码如下:

    userDefinedColorName = "green"
    colorNameToUse = userDefinedColorName ?? defaultColorName
    //userDefinedColorName非空,因此colorNameToUsede的值为绿色

    3. 区间运算符

    区间运算符:Swift 提供了两个方便表达一个区间的值的运算符。

    闭区间运算符:闭区间运算符(a...b)定义一个包含从ab(包括ab)的所有值的区间,b必须大于a。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中,代码如下:

     for i in 1...5{
                print("i = (i) * 5 = (i * 5)")
            }
    // i = 1 * 5 = 5
    // i = 2 * 5 = 10
    // i = 3 * 5 = 15
    // i = 4 * 5 = 20
    // i = 5 * 5 = 25

    半开区间运算符:半开区间(a..<b)定义一个从ab但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。半开区间的实用性在于当你使用一个0始的列表(如数组)时,非常方便地从0数到列表的长度。代码如下:

    var names :[String] = ["Anna", "Alex", "Brian", "Jack"]
            let count = names.count
            for i in 0..<count{
                print("第(i)个名字叫(names[i])")
            }
    // 第 1 个人叫 Anna
    // 第 2 个人叫 Alex
    // 第 3 个人叫 Brian
    // 第 4 个人叫 Jack
  • 相关阅读:
    题解[LuoguP7419 「PMOI-2」参天大树]
    UVA11582 巨大的斐波那契数! Colossal Fibonacci Numbers!
    数学专题
    [计蒜客]dp
    [蓝桥杯每日一题]1.3 & 1.4
    【acm】2020icpc南京补题
    [acm]乐师师范学院校赛题解-2020
    西南交通大学峨眉校区第二届"INT"杯程序设计竞赛——决赛
    指针与结构体
    [acm] 动态规划——最长上升子序列
  • 原文地址:https://www.cnblogs.com/xumaodun/p/5568428.html
Copyright © 2011-2022 走看看