swift 初见-2

直接上代码:

// Playground - noun: a place where people can play

import UIKit

var str = "Hello, playground"
// 使用if ,switch 来进行条件操作 ,for-in , for ,while ,do-while 进行循环操作
// 特点:包裹条件和循环变量括号可以省略,但是语句体的大括号是必须得
let scores=[89,79,100,99]
var teamSecore=0;  // 换为var teamSecore:Float/Double=0;也会出现同样的错误
for score in scores
{  // 大括号是必须的
    teamSecore+=score
}

// if语句条件必须是一个布尔表达式
// 可以使用if和let 来处理变量,变量可能是具体的值或者nil,表示值缺失.此时在类型后面加一个问号?来标记这个变量的值是可选的

var optionalString:String?="hello"
var optionalSteing1:String?
  optionalString=nil
  let name1="hellos"

println(optionalString==nil)

// 下面这种写法是错误的,想要赋值为空,需要使用“?”来标记
// var gender = "男"
// gender = nil
if let name=optionalString   // 给name 赋值判断name是否为空
{
    println(name+optionalString!)
    println(name==optionalString)
}

// 数据类型别名定义  熟知的typedef 变为了 typealias 

typealias kAnd=String  // 作用域在定义之后
var num=100;
println(kAnd(num))  // 相当于String(num)

// 
let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
println(wiseWords)  //""Imagination is more important than knowledge" - Einstein"

var emptyString = "" // empty string literal
var anotherMethod = String() // initializer syntax

 //  在swift中字符串不是指针,而是实际的值,因此,在Swift中,一个String类型就是一个实际的值,当定义一个新的String,并且将之前的String值拷贝过来的时候,是实际创建了一个相等的新值,而不是仅仅像指针那样指向过去。同样在函数传递参数的时候,也是传递的实际值,并且创建了一个新的字符串,后续的操作都不会改变原有的String字符串。

let yenSign: Character = ""

// for循环遍历每个字符
for character in "Dog!" {
    println(character)
}
for characters in wiseWords
{
    println(characters)
}
// 字符串长度的统计,可以使用全局函数countElements可以计算一个字符串中字符的数量,这点与其它语言length有点不同。
 let unusualMenagerie = "Koala , Snail , Penguin , Dromedary "
 println("unusualMenagerie has \(countElements(unusualMenagerie)) characters")
 //待验证1: 字符串与单个字符,可以使用+,+=操作将字符串和字符串接在一起 (有的说可以但是我试了,有时报错,但有时又没有错??,难道我的编译器有问题???,谁试了可以给个示例,谢谢)
 var stringAppend=unusualMenagerie+wiseWords  //两个String类型的相加
  var aChar:Character="a"

 // stringAppend+=aChar  //这句话在某些情况下是编译正确的,没有报错,但是结果不正确 ,某些情况下报如下错误 ,所以说待验证1的说法很大可能是错误的把

  println(stringAppend)
  
  // 字符串比较使用 ==
let quotation = "We‘re a lot alike, you and I."
let sameQuotation = "We‘re a lot alike, you and I."
if quotation == sameQuotation {
    println("These two strings are considered equal")
}


// 待验证2: 这是其他博客的代码,下面这些代码并没有通过编译啊
/*
  字符串常量可以包括下面这些特殊字符:
  空字符\0,反斜杠\,制表符\t,换行符\n,回车符\r,双引号\”和单引号\’
  单字节Unicode字符,\xnn,其中nn是两个十六进制数
  双字节Unicode字符,\unnnn,其中nnnn是四个十六进制数
  四字节Unicode字符,\Unnnnnnnn,其中nnnnnnnn是八个十六进制数
  示例:
    let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
    // "Imagination is more important than knowledge" - Einstein
    let dollarSign = "\x24" // $, Unicode scalar U+0024
    let blackHeart = "\u2665" // ♥, Unicode scalar U+2665
    let sparklingHeart = "\U0001F496" // , Unicode scalar U+1F496
*/

/*
swift还保留了oc中的前后缀函数hasPrefix和hasSuffix
大小写字符串使用uppercaseString 和 lowercaseString
unicode :
Swift 支持多种不同的方式取得Unicode字符串.
你可以使用for-in语句遍历字符串,来获得每一个字符的Unicode编码值。这个过程已经在字符(Working with Characters)描述过了。
或者,下面三个描述中使用合适的一个来获得一个字符串的值
UTF-8字符编码单元集合使用String类型的utf-8属性
UTF-16字符编码单元集合使用String类型的utf-16属性
21位Unicode标量集合使用String类型的unicodeScalars属性
*/
let testUncode = "Dog!狗"
for codeUnit in testUncode.utf8 {
    print("\(codeUnit) ")
}
print("\n")
// 68 111 103 33 231 139 151

for codeUnit in testUncode.utf16 {
    print("\(codeUnit) ")
}
print("\n")
// 68 111 103 33 29399

for scalar in testUncode.unicodeScalars {
    print("\(scalar.value) ")
}
print("\n")
// 68 111 103 33 29399
// 在utf-8中,中文的"狗"占三个字节,而在utf-16 及标量(utf-32)中正好可以一个字节就装得下。

// 很多博客中写的是 let   emptyArray = String[]() 这里纠正一下是不正确的的
var emptyArray = [String]()
emptyArray.insert("哈哈", atIndex:0) //可变数组啊,let 和var 才是决定是否可变的要素
println(emptyArray[0])
// 不需要指字类型,则数组可以直接使用"[ ]" 字典[:]
 var otherArray=[];
 otherArray.indexOfObject("hello")  // 竟然不会报错,但是这明显是错误的写法啊
 println(otherArray)
 var dic=[:]

上面这些代码是我综合网上的写下来的,有些还需验证,希望路过的指教一下哈.

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。