Swift 入门

import Foundation

//&&&&&&&&&&&&&&&&& Swift里面以空格表示结束.&&&&&&&&&&&&&&&&&&

/*
// 这种定义方式定义后,后面的值只能是字符串.
let name : String = "王亮";
// 隐士类型推断, 由初始值来推断常量的类型
let gender = "男";
let 王朗 = "缺德";
let ?? = "笑";
// 使用let定义的常量的值永远不能改变

//定义变量
var age = 100
var height : Int = 140 //Swift在定义一个变量或者常量的时候,必须要有确定的类型.

let a : Int = 10
let b : String = "Hello"
let c : Character = "A"
let flag : Bool = false
let d : Bool = true;

//注意:值永远不会被隐士转换为其他类型 , 如果需要转换.请显示转换;
//不可以将两个不一样类型的变量或常量直接进行四则运算.  需要写成 :变量 (常量) A + 目标类型 B

let name1 = "Lanou‘s age is "
let age1 = 3;
let words = name1 +  String(age1)
print(words)
// 运算符重载. 加法运算的时候会自动拼接到一起.
*/

//let string = "好的"
////创建一个值为空的字符串
//let string1 = ""
//let string2 = String()
//print(string1)

//var var_str = "Hello lanou"
//var empty_str1 = ""
//var empty_sty2 = String()
//
//if empty_str1.isEmpty
//{
//print("empty_str1 is empty")
//}

//字符串链接
//创建字符串变量
//var var_str = "http://"
//var_str += "www.lanou3g.com"
//print(var_str)
//
////创建字符串常量 . 注意常量不能被修改
//let con_str = "Hello"
////获取字符串的长度
//let length = con_str.characters.count
//print(length)

//字符串插值
//let mul = 3.0
//let content = "\(mul)*2.5 = \(mul*2.5)"
//print(content)

//字符串比较
//let name3 = "xiaohao"
//let name2 = "lanou3g"
//if name3 == name2
//{
//print("\(name3)equals\(name2)")
//}
//else{
//print("not equal")
//}
//
//// 练习一
// 创建两个String类型的变量, 初始值为"a" "b", 并交换两个变量的值.
//var smile = "a"
//var cay = "b"
//var ww = ""
//
//ww = smile
//smile = cay
//cay = ww
//
//print(ww)
//print(smile)
//print(cay)

// %%%%%%%%%%%%%%%%数组%%%%%%%%%%%%%%%%

//let array = ["张三", "李四", "王五"];
//print("赵六\(array)")
//
//// 如果数组里面保存的数据不是同一类型的, 那么数组的类型是NSObject的.
//var array1 = ["王德亮", "大波", "鹏辉", 401]
//print("array1")
//// 提前指定数组的数据类型.
//var array2 : [Int] = [1, 2, 3]
//
//// Swift中可以通过直接访问数组下标 改变数据的值
//array1[3] = "付东"
//
//// 向数组中追加一个元素.
//array1.append(401)
//// 使用运算符加载 向数组中追加一个元素.
//array1 += [502]
//// 插入一条数据
//array1.insert("小鹏辉", atIndex: 2)
//
//let array5 = ["1", 2]
//// 想数组中插入一个集合类型的数据 (这个集合要和数组是同一类型)
//array1.insertContentsOf(array5, at: 2)
// 删除全部
//array1.removeAll()

// 从头开始删两个
//array1.removeFirst(2)
// 全删 但是保留内存
//array1.removeAll(keepCapacity: true);
// 删除最后一个元素
//array1.removeLast()
// 删除某一位置的元素
//array1.removeAtIndex(1)
// 从几删到几
//let range : Range = Range.init(start: 1, end: 4)
//array1.removeRange(range)

//print(array1)

//%%%%%%%%%%%%%%%%%%%%字典%%%%%%%%%%%%%%%%%%%%%%
// 定义一个字典
//let dictionary = ["a" : 1, "b" : 2]
//print(dictionary)
//// 如果字典里的key的类型不同 , 那么key的类型就是NSObject
//let dictionary1 = ["a" : 1, 2 : "b"]
//print(dictionary1)
//// 提前指定key和value的类型  创建一个字典
//let dictionary2 : [Int : String] = [1 : "a", 2 : "b"]
//print(dictionary2)
//// 可以直接通过key值访问字典中的元素
//print(dictionary2[1])
//
//// 可变
//
//var dictionary3 = ["小萨摩" : "大花猫", 114 : 111]
//// 修改
//dictionary3["小萨摩"] = "大波"
//// 不存在的话 , 就会插入
//dictionary3["蛋蛋"] = "建国"
//// 让某一个key值为Nil 表示删除掉这个key和对应的value
//dictionary3[114] = nil

//print(dictionary3)

// 交换数组中下标的值.
//var array = [NSObject]()
//array += ["胡波"]
//array.append("王德亮")
//print(array)
//
//let string = array[0]
//array[0] = array[1]
//array[1] = string
//print(array)

//@@@@@@@@@@@@@@@@@@@@@@@@ 元祖 @@@@@@@@@@@@@@@@@@@@@@@@

//let type = ("王的来", ["联通", "污唐"])
//print(type)
//print(type.0)//通过下标
//
//let type1 : (String, Int) = ("赵四", 100)
//print(type1)
//// 通过赋值来取值
//let type2 : (name : String, age : Int) = type1
//print(type2.age)

// 练习
//
//var dictionary = ["number" : 12, "name" : "张飞", "gender" : "男", "age" : 24]
//var stuarray = [dictionary]
//
//var type = (dictionary)
//var type1 = (stuarray)
//print(type)
//print(type1)

//#################循环结构  分支结构################
//for (var i = 0; i < 100; i++){
//print(i)
//}

//1...10闭区间 包括10.  1..<10 半开区间,不包括10
//for i in 1...10{
//print(i)
//}

//var array = ["dog", "??", "cat"]
//for a in array
//{
//print(a)
//}

//var dictionary = ["wangwang" : "dog", "doudou" : "cat"]
//for (b, c) in dictionary
//{
//print(b, c)
//}

//var number = 0
//while number < 10{
//   print(number)
//   number++
//}

//var number1 = 0
//repeat{
//number1 += 1
//print(number1)
//
//}while number1 < 10
//

//if 1 == 1
//{
//print(1)
//}

// 可选值 , 在变量的类型后面加一个问号 , 表示这个变量为可选类型, 可以被置为nil;
//var a : String? = nil;
//var string : String? = "asda"
//if (string != nil)
//{
//}

//
//let  age = 3
//// Swift 里面 每一个case里自带一个break
//// 如果想要贯穿的话, 可以用fallturough关键字..
//switch age{
//case 1:
//    print("age = 1")
//case 2:
//    print("age = 2")
//case 3:
//    print("age = 3")
//    fallthrough
//case 4:
//    print("age = 4")
//default:
//    print("age = 5")
//
//}
//// 可以根据区间获取值
//
//switch age{
//case 0...10:
//    print("粗跟博")
//case 11...20:
//    print("大屁股")
//case 21...30:
//    print("mengwang")
//default:
//    print("老变态")
//}
//
//
//var a = 0
//// switch可以在case里面添加where条件判断.
//switch a {
//case var value where a < 10 && a > 0:
//    value++
//print(value)
//default:
//    print("error")
//}

//let point = (10, 100)
//// 对一个元祖做判断 "_"表示忽略这个位置的元素
//switch point {
//case (10, 10):
//    print("第一象限")
//case (_, 10):
//    print("一,四象限")
//case (10, _):
//    print("一,三象限")
//case (_, _):
//    print("爱在哪在哪")
//}
//print(point)

//%$$$%$%$%$%#$%@!% 函数 [email protected]#$!$%#$!#$%^!#$!

//无参无返
//无参有返
//无参有多个返回值
//有参无返
//有参有返
//有参有多个返回值
//inout函数

// 函数定义格式
// func + 函数名 (参数列表) -> 返回值类型 {}

// 返回值类型不写 表示无返回值
//func text() -> Void {
//print("我是一个无参无返回值得函数")
//}
//text()
//
//// 无参有返
//func text1 () ->String
//{
//return "我是一个无参有返的函数"
//}
//let string = text1()
//print(string)
//
//
//// 有参 无返回值
//func text2(name : String, age : Int) {
//print("爱打架阿道是\(name)  年龄是\(age)")
//}
//text2("黄军", age: 100)

// 有参有返回值
//// 参数是一个字符串和Int 返回一个数组
//func text3(name : String, age : Int) ->Array<NSObject>
//{
//    let array : Array<NSObject> = [name, age]
//    return array
//}
//print(text3("zha", age: 404))
//

//// 函数的外部参数名 第一个名字表示外部参数名, 当外界使用这个函数的时候只有的名字, 第二个参数表示内部参数名,当函数里面使用这个参数的时候使用的名字.
//func  text4(number myNumber : Int, name myName : String){
//print("我的名字是\(myName), 我的号码是\(myNumber)")
//}
//text4(number: 100, name: "赵子龙")
//
//

//// 无参有多个返回值的
//func text4() -> (String, Int) {
//return ("张三", 108)
//}
//let type = text4()
//print("\(type.0), \(type.1)")

// 有参有多个返回值
//func text5(name : String, age : Int) ->(String, Int)
//{
//    return(name, age)
//}
//let type1 = text5("zhang", age: 10)
//print("\(type1.0), \(type1.1)")

//////////函数嵌套
//func text6(){
//    func text1(){
//        print("第一层")
//        func text2(){
//            print("第二层")
//            func text3(){
//               print("第三层")
//            }
//            text3()
//        }
//        text2()
//    }
//    text1()
//}
//text6()
//
//

/////////////////////////// inout 函数/////////////////////
////Swift中的函数 本身是使用let定义的, 是不能更改的 如果想要更改可以使用var定义

//func text7(inout name : String){
//name = "赵四"
//}
//var name = ""
//text7(&name)
//print(name)

//let type = (2, 8)
//switch type{
//case (_, 1...5):
//    print("呵呵呵")
//case (_, 5...7):
//    print("嘿嘿嘿")
//default:
//    print("滚滚滚")
//}
时间: 2024-10-11 23:05:41

Swift 入门的相关文章

Swift入门(五)——数组(Array)

集合 集合的定义 Swift中提供了两种数据结构用于存放数据的集合,分别是数组(Array)和字典(Dictionary).他们的主要区别在于数组中的元素由下标确定,而字典中的数据的值由数据的键(Key)决定.以下我们认为集合就是数组或字典. 集合的可变性 我们可以定义一个集合常量或者集合变量.一旦定义为常量,就意味着集合的长度.内容和顺序都不能再修改了.比如,定义为常量的数组,不能再向其中添加新的元素. 数组的创建 由于swift中变量的创建遵循" var 变量名:变量类型 "的语法

Swift入门(九)——String与Int、Double、Float等数字相互转换

三种转换模式 任何语言里面,Int.float.double等数字类型自成一派,但它们和String类型之间的转换总是不太方便,这里总结一下它们相互转换的方法.总结下来一共有三种转换模式,分别举例说明. 一.String转数字 这里以String类型转Int类型为例.String转其他的数字类型(Float.Double等)大同小异.主要用到的方法是String类型的toInt方法.注意这个方法返回的是Int?,即一个整数可选类型.所以需要解封. var string = "1234"

Swift入门(三)——元组(Tuple)

定义 元组是一个包含了若干个相关联变量的对象. 元组的创建 var newTuple = ("kt",20) //由于Swift的类型推导,newTuple被推导为(String,Int)类型的变量 元组的解绑 几个变量一旦联合在一起,组成了一个元组,他们就被"绑定"了,要想从一个元组中单独取出某一个数据时,需要解绑元组. 直接解绑 直接解绑是最简单的一种解绑方式,只要定义若干个变量与元组中的变量一一对应即可. var newTuple = ("kt&qu

Swift入门篇-结构体

前面主要是介绍swift语言中基本类型的用法,今天给大家介绍的是swift的结构体的用法,swift中结构体的用法和其他语言的用法,还有不太一样,不过您多敲几遍,就可以理解结构体,结构体在ios开发中是灰常重要的一部分,如果您很好的掌握结构体,在后面ios开发中,会理解的更加清楚. 一:结构体声明 格式: struct 结构体名 { } 说明: 1: struct 是定义结构体的关键字 例子 /* 1:struct 是结构体的关键字 2:student 结构体名称 3:student() 创建一

swift入门篇-函数

今天给大家介绍 swift函数,swift函数和c#,js的写法大致一直,但是与object-c写法有很大不同点.废话不多说,直接开始了. 1:函数  --常量参数 func 函数名( 参数变量:类型 ,参数变量:类型...){} 说明: 1: func 是函数关键字 2:{} 函数体 3: 参数变量是默认常量类型,不能在函数函数体里面直接修改 即 func A (value:String)  与 func A (let value:String)写法是相同的,即value 是常量. 例子 /*

Swift入门篇-集合

一:数组 一:可变数组 定义:数组使用有序列表存储相同类型的多重数据. 格式: 第一种格式 var 变量: 类型[] = [变量值,变量值,...] 第二种格式 var 变量 =[变量值,变量值,...] 说明: 1:[变量值,变量值...] 这样表示数组 ,前提是 变量值的类型必须一值.(和其他语言有所不同) 2:上面两种格式都是定义一个数组,数组中的变量值的类型必须一致 3:第一种格式定义的数组,是直接定义数组,第二种格式定义的数组 是编译器通过类型值推导出是数组格式 注意点 1:常量关键字

Swift入门(十二)——利用Extension添加逆序输出字符串方法

Swift好像没有自带逆序输出字符串的方法,于是决定通过拓展(Extension)给String类添加一个逆序输出字符串的reverse方法. 首先新建一个Swift文件,命名规则不太清楚,于是暂且模仿OC叫做String+Operation吧,然后实现我们需要拓展的方法.下面先贴上代码,然后解释一下这段代码. //String+Operation.swifft import Foundation //逆序输出swift中的字符串 extension String{ func Reverse()

Swift入门(四)——可选类型(Optionals)与断言(Assert)

可选类型是什么? 首先看一个问题,Swift中String类型的变量有一个叫做toInt的方法,可以把String类型变量转换为Int类型变量. var stringValue = "5" var intValue = stringValue.toInt(); println("intvalue = \(intValue)") 执行以上方法后得到了奇怪的结果: intvalue = Optional(5) 其实,可以发现,toInt方法的返回值并不是Int,而是In

Swift入门教程:基本语法大全

原文:Swift入门教程:基本语法大全       简介:                                                                                                                                                                                  什么是Swift                                  

Swift入门篇-Hello World

提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要升级系统和升级开发工具和去啃苹果开发文档,也时常关注一些写swift的文章.自己也边学swift,边做了一些小例子玩.个人感觉语法精炼,用起来还是很爽的. 但是个人觉得开发工具还是有很多不足(如自动提示有时候不出现),希望苹果在发布正式版的时候能修复的更好一点,在后面我会把我犯错的经历写下来. 今天