zoukankan      html  css  js  c++  java
  • 【Swift学习】Swift编程之旅(一)

      学习一门新语言最经典的例子就是输出“Hello World!”

    print("Hello World!")  swift就是这样来输出的。

    如果你使用过其他语言,那么看上去是非常的熟悉吧。但比一些c要简单的多吧

    1、不需要导入一些单独的库,比如输入/输出或字符串处理功能的类库,

    2、不需要在全局范围内编写的代码用于作为入口点程序,所以你不需要 main()函数,

    3、不需要写在每个语句的末尾的分号。这样写是不是很简单~

      简单值

    使用let来声明一个常量,var声明一个变量。一个常量值在编译时无须知道,但你只能赋值一次,我们需要在声明时赋值,如果多次赋值会发生编译错误,如下图

    一个变量值可以在声明时赋值,也可以在以后赋值。

    常量或者变量的类型必须和赋给它们的值一样。然而,声明时类型是可选的,声明同时赋值的话,编译器会自动推断类型。在上面的例子中,编译器推断出var1是一个整数(integer)因为它的初始值是整数。

    如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割。
     
    数值不会被隐式转换为其他类型,必须显式转换,例如转换为字符型
     
    若不显式转换会发生编译错误,如下图
     
     
    最简单的转换为把值写到括号中,并且在括号之前写一个
     
       
    常量和变量的命名规则
    1.你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符
    即使你使用中文常量名也是毫无问题的
    2.常量与变量名不能包含k数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符
    3.不能以数字开头
    4.一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
    5.避免使用关键字作为常量或变量名
      数组和字典
    使用[]来创建数组和字典,通过数组索引或字典的键(key)来访问元素。元素之间使用逗号分隔。
    var shoppingList = ["catfish", "water", "tulips", "blue paint"]
    shoppingList[1] = "bottle of water"
     
    var occupations = [
        "Malcolm": "Captain",
        "Kaylee": "Mechanic",
    ]
    occupations["Jayne"] = "Public Relations”

     我们看一下结果

    OK!和我们预期的一样。

    下面我们创建一个空的数组和字典

    let emptyArray = [String]()//创建一个元素为字符类型的数组
    let emptyDict = [String:float]()//创建一个key为字符类型,值为浮点类型的字典

    如果类型可以被推断出来,你可以使用[]和[:]来创建空的数组和字典。

      控制流

    使用if和switch执行条件操作,使用for-in ,for,while,repeat-while执行循环操作。条件或循环变量的圆括号是可选的,但是语句体的大括号({})是必须的.

    let individualScores = [75, 43, 103, 87, 12]
    var teamScore = 0
    for score in individualScores {
        if score > 50 {
            teamScore += 3
        } else {
            teamScore += 1
        }
    }
    print(teamScore)//输出11

    在if语句中条件必须是一个布尔(Boolean)表达式。在这里我们明晰可以看出swift语法的简洁。

    var optionalString: String? = "Hello"
    print(optionalString == nil)
     
    var optionalName: String? = "John Appleseed"
    var greeting = "Hello!"
    if let name = optionalName {
        greeting = "Hello, (name)"
    }

     输出结果:

    false。

    Hello, John Appleseed

    因为optionalString和optionalName都是有具体的值,但如果optionalName=nil的话,那么greeting输出结果为Hello!

    var optionalName: String? = "John Appleseed"
    var greeting = "Hello!"
    if let name = optionalName {
        greeting = "Hello, (name)"
    }
    else{
    greeting = "Hello,匿名"
    }

    输出结果

    false

    Hello,匿名

    switch支持任意类型的数据和各种比较操作,它不局限于整数和相等的测试

    let vegetable = "red pepper"
    switch vegetable {
    case "celery":
        print("Add some raisins and make ants on a log.")
    case "cucumber", "watercress":
        print("That would make a good tea sandwich.")
    case let x where x.hasSuffix("pepper"):
        print("Is it a spicy (x)?")
    default:
        print("Everything tastes good in soup.")
    }

    输出结果为

    Is it a spicy red pepper?

  • 相关阅读:
    矩阵Frobenius范数、核范数与奇异值的关系
    范数与正则化
    对偶上升法,增光拉格朗日乘子法,交替方向乘子法
    拉格朗日函数,拉格朗日对偶函数,KKT条件
    relint, 相对内点集的理解
    转:Mac 弹出App can’t be opened because Apple cannot check it for malicious software的解决方法
    数组分块1
    fzu 2275 Game [第八届福建省大学生程序设计竞赛 Problem D]
    fzu 2275 Game [第八届福建省大学生程序设计竞赛 Problem D]
    Plug-in CodeForces
  • 原文地址:https://www.cnblogs.com/salam/p/5351314.html
Copyright © 2011-2022 走看看