首页 > 代码库 > 苹果官方Swift文档翻译02

苹果官方Swift文档翻译02

Simple Values

翻译来自: Apple Inc. “The Swift Programming Language”。 

在Swift中,使用let来定义常量,使用var来定义变量;常量的数值在编译时可以不固定;但你必须在编译之前要给常量赋过值(至少一次),这意味着你可以在许多地方通过这个常量来使用这个值;

                var myVariable = 42

                myVariable = 50

                let myConstant = 42

常量或者变量的数据类型与你分配给他们的值的类型保持一致,但是你却不用总是明显的进行类型说明,通过赋值可以让编辑器知道你创建的常量或者变量属于什么数据类型,在上面的代码例子中,编译器会认为 myVariable是整型数据,因为它初始的赋值是整型.

如果在(变量)初始化的时候没有足够的信息(或者没有初始值)让编译器确定数据类型,那么可以在这个变量后面专门指定数据类型,只需要使用分号来间隔即可.

              let implicitInteger = 70

    let implicitDouble = 70.0

    let explicitDouble: Double = 70

    EXPERIMENT(//练习)

     Create a constant with an explicit type of Float and a value of 4.  // 创建一个Float常量,并让它的数值为4.

值的类型不能隐式的转换成另一种类型,如果你需要转换,需要明显的声明你希望的数据类型.

    let label = "The width is "

    let width = 94

    let widthLabel = label + String(width)

    EXPERIMENT //练习题

    Try removing the conversion to String from the last line. What error do you get?

              /*试着在上面代码的最后一行去掉String ,看看会发生什么错误*/

在Swift中,有一种简单的在字符串中传入要显示的值,只需要在圆括号()中写值即可,并且在圆括号前面添加一个反斜杠(\).

例如:

    let apples = 3

    let oranges = 5

    let appleSummary = "I have \(apples) apples."

    let fruitSummary = "I have \(apples + oranges) pieces of fruit.”

    EXPERIMENT // 练习

     Use \() to include a floating-point calculation in a string and to include someone’s name in a greeting.

             /*使用\()在字符串中添加一个浮点运算,并且包含问候语(例如带上某人的名字)*/

 在Swift中,创建数组类型或者字典类型,通过使用[],访问其内部元素只需要在[]内添加索引即可.

    var shoppingList = ["catfish", "water", "tulips", "blue paint"]

    shoppingList[1] = "bottle of water"

    var occupations = [

        "Malcolm": "Captain",

        "Kaylee": "Mechanic",

    ]

    occupations["Jayne"] = "Public Relations”

如果要创建空的数组或者字典,使用如下初始化语法

    let emptyArray = String[]()

    let emptyDictionary = Dictionary<String, Float>()

如果类型是已知的,你可以只使用[]来定义空数组或者[:]来定义字典,这就像是个变量设定一个新值,或者给函数传递参数一样.

    shoppingList = []   // 购物清单

在Swift中条件判断使用if和switch,事件循环使用for-in,for,while以及do-while,但不同的是,条件判断或事件循环里的()是可以省略的.包裹判断体或者循环体的{}是不能省略的.

代码样例:

    let individualScores = [75, 43, 103, 87, 12]

    var teamScore = 0

    for score in individualScores {

        if score > 50 {

            teamScore += 3

        } else {

            teamScore += 1

        }

    }

    teamScore

在if语言中,判断的条件必须是Bool类型的表达式,这就意味着这样的代码是错误的:if score {...}.

也可以使用if 和let一起操作值,这些值表示选择性,可选的值不包括nil.在值的类型后添加?标识可选.

    var optionalString: String? = "Hello"

    optionalString == nil

    var optionalName: String? = "John Appleseed"

    var greeting = "Hello!"

    if let name = optionalName {

        greeting = "Hello, \(name)"

    }

    EXPERIMENT  // 练习题

    Change optionalName to nil. What greeting do you get? Add an else clause that sets a different greeting if optionalName is nil.

    //增加一条语言, 将 optionalName设置为nil,看看会发生什么,