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=[:]

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

时间: 2024-11-05 21:59:49

swift 初见-2的相关文章

Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 协议和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实

The Swift Programming Language 中文版---Swift 初见

Swift 初见 本页内容包括: 简单值(Simple Values) 控制流(Control Flow) 函数和闭包(Functions and Closures) 对象和类(Objects and Classes) 枚举和结构体(Enumerations and Structures) 接口和扩展(Protocols and Extensions) 泛型(Generics) 通常来说,编程语言教程中的第一个程序应该在屏幕上打印"Hello, world".在 Swift 中,可以用

【swift初见】SourceKitService Terminated

心血来潮想试试最新的Xcode6 beta和swift语言,新建一个工程开始swift编程之旅,没想到一直报SourceKitService Terminated错误,框框一直弹出来,并且所有的Xcode里的字体都变成了灰色 其原因是我新建project的时候用的名字是swift,这是Apple的一个保留词,所有编译器会报错. 解决办法就是project命名的时候尽量避免Apple的保留词. [swift初见]SourceKitService Terminated

【Swift初见】Swift构造过程

所谓构造过程是指在创建某个实例而进行的一系列准备过程.比如为实例中的属性设置初始值和执行其他初始化工作. 构造过程是通过构造器来实现的,其实每个构造器就可以看作是一个函数,只是这个函数是为了执行初始化的. 1.存储属性的初始赋值 以类和结构体的实例创建为例,在创建类和结构体实例的时候,需要给类和街头题的属性设置一个默认值,有两种方法: 1??在定义属性的时候设置默认值:2??在构造器中赋初值 无论是哪一种方法,他们的值都是被直接设置的,不会触发任何的属性观察器. 那么什么是构造器呢?其实在上面的

【Swift初见】Swift函数(一)

在任何语言中,函数都是非常重要的,今天我们就来初步的学习下Swift中的函数. 1.Swift函数默认参数: ①.可以放在函数的任意位置: ②.外部名称与内部名称一致: ③.调用的时候可以不写: ④.在函数定义时传入参数里定义好. func joinString(s1: String , toString s2: String , joiner s3 : String = "*") -> String{ return s1 + s3 + s2 } let str = joinSt

【Swift初见】Swift数组(二)

在苹果的开发文档中对Array还提供了其它的操作算法: 1.Sort函数: 对数组进行排序.依据指定的排序规则,看以下的代码: var array = [2, 3, 4, 5] array.sort{$0 < $1} println(array) 此时打印出:[2, 3, 4, 5] 事实上sort大括号中面是一个闭包,这个以后再学习. 假设倒叙排列,代码例如以下: array.sort{$0 > $1} println(array) 输出为:[5, 4, 3, 2] 2.reverse函数

【Swift初见】Swift结构体

结构体struct我们应该不会陌生,从我们刚开始接触C语言的时候就一直学这个,OC中也有,swift的结构体和C和OC的结构体类似: 当我们定义一个结构体的时候,格式如下: struct Rect { var width : Double = 0.0 var height : Double = 0.0 } 我们这边定义了一个Rect结构体,里面有两个变量,初始值都为0.0,创建一个结构体实例: var rect : Rect = Rect() 看起来是不是非常的熟悉?跟C还有OC很类似吧. 访问

swift 初见-5集合类型

// Playground - noun: a place where people can play import UIKit var str = "Hello, playground" // swift的集合类型只有数组和字典 // 数组中只能存储相同类型的数据(可以是基本类型,也可以是类对象) // 申明方法 [String] Array<String> // 一旦隐是声明后,他的类型就确定了,不能在存储其他类型的数据了 var array=["a"

【Swift初见】Swift数组

在Objective-C中数组是常用的数据类型,在Swift中同样如此,在OC中有NSArray与NSMutableArray之分,但是在Swift中只有通过let和var来区分数组是否可变,Swift中的数组是类型安全的,所以在某个数据被存入到某个数组之前类型必须明确,假如我们创建了一个String类型的数组,那么该数组中就不能添加非String的数据类型,这是Swift与OC的一个很重要的区别. 数组的构造 我们以创建一个数组并存储Int类型的数组为例: var array = [2, 3,