Switf的基本语法

1.在Swift中MARK的用法:

//MARK:

2.在Swift中 定义常量,变量

// 定义常量 (使用完第一次就不能修改它的值)

let myGender = "男";
// 定义变量
var carName = "BMW";
carName = "Audi";
print(carName)
// MARK: - 定义常量变量 : 变量类型的隐式转换
// 在Swift中如果定义常量变量不给定相关的类型,它会隐式转换成String类型
let name = "Jack" // 如果这样子定义出来一个常量,它会隐式转换成String类型

let name1 : String = "Rose" // 如果给定类型,后边赋值的时候需要根据类型进行赋值

let age : Int = 18 // 如果定义常量最好给出初始值,定义变量可以不给初始值

var age1 : Int? //?表示age1的类型为可选类型,其值可以为空
print(age1)
// 定义一个字符类型的变量
var char:Character = "A" // 赋值字符类型的时候仅需一个字母即可

// 定义一个BOOL类型的变量 [在swift中bool类型的变量只有ture或者false]

var flag : Bool = true

// MARk: - 字符串string
// 1.创建一个空的字符串
var str_emperty = ""

var str1_emperty = String()

// 2.判断一个字符串为空字符串
if str_emperty.isEmpty {
    print("str_emperty is emperty")
}

// 3.字符串的拼接
var str_url = "http://"
var str = "www.baidu.com"

var str_new_url = str_url + str
print(str_new_url)
print("百度网址:\(str_new_url)\n") // \(变量名)输出相关的内容 [插入式取值]

// 4.获取字符串的长度
var str1 : String = "abcdef"
print(str1.characters.count)

// 5.字符串的比较
var str2 = "MBBoy"
var str3 = "GBLW"

if str2 != str3 {
    print("两个字符串不相等")
}

// MARK: - 数组
// Swift中数组中的元素类型必须相同

// 定义一个数组
var nameArray = ["yuanyuan", "GBLW", "WYW"]
print(nameArray)

var nameArray1 : Array<String> = ["YQ", "XQ", "FatZhou"]
//定义一个空数组(字符串)
let array = Array<String>()
print(array)

// 访问数组中的元素
print(nameArray[1])

// 向数组中添加元素
var int_array = Array<Int>()
int_array.append(520)
int_array.append(123)
print(int_array)

// 使用运算符添加数组元素
int_array += [100,99]
print(int_array)

// 使用运算符添加多个元素
int_array += [999,888,777]
print(int_array)

// 插入元素到具体的位置
int_array.insert(521, atIndex: 1)
print(int_array)

// 移除某个元素
int_array.removeAtIndex(2);
print(int_array)

// 移除所有元素
int_array.removeAll()
print(int_array)
// MARK: - 字典
// 定义一个字典类型的变量
var dic : Dictionary<String,Int> = ["a":18, "b":69,"c":38]

print(dic)

// 定义空字典
var dic1 : Dictionary<String,Int> = [:]
var dic2 = Dictionary<String,Int>()

//往字典里添加键值对
dic["d"] = 50
print(dic)

// 修改字典中的内容 (根据键去修改值)
dic["a"] = 90
print(dic["a"])

// 删除字典中的键值对
dic.removeValueForKey("b")
print(dic)

// MARK: - 元组

//定义一个元组

// 方法一: 直接初始化一个元组 (使用Swift隐式转换的特点)
let tuples = ("蓝鸥1班",["iOS","html5", "Android"])
print(tuples)
// 方法二: 显示初始化的方式
let tuplesNew : (String,Array) = ("蓝鸥8班",["iOS", "html5", "Android"])

// 取出元组中值
// 第一种取值方式 : 直接把元素赋值给另一个常量,根据相关标记进行取值
let tuplesNew1 : (classroom:String,course:Array) = tuplesNew
var classInfo = tuplesNew1.classroom + tuplesNew1.course[0] + tuplesNew1.course[1] + tuplesNew1.course[2]
print(classInfo)

// 第二种取值方式: 直接根据下标取值
var classInfoNew = tuplesNew1.0 + tuplesNew1.1[0] + tuplesNew1.1[1] + tuplesNew1.1[2]
print(classInfoNew)

// MARK: - 循环
// 第一种形式:
for var i = 1;i < 10;i++ {
    print(i)
}

// 第二种形式
for number in 1..<10
{
    print(number)
}

// 第三种形式
for number1 in 1...10
{
    print(number1)
}

// while循环和repeat...while

var i = 8
while i > 0
{
    i--
    print(i)
}

repeat { // 先执行一次循环体,再进行相关的循环
print("I love you")
    
} while 1 < 0

// 使用循环遍历数组
var animalArray = ["dog", "pig", "cat", "tiger"]
for animal in animalArray
{
    print(animal)
}

// 使用循环遍历字典
var animalDic = ["dog":"??","pig": "??", "cat": "??"]
for (key,value) in animalDic
{
    print("key = \(key), value = \(value)")
}

// MARK: - 分支结构(if结构和switch格式)
// if形式
let flag1 = true

if flag1 == true
{
    print("我是真的I love you")
} else {
    print("I love you. too")
}

// swithch形式使用fallthrough实现贯穿每种可能
let value = 0
switch value
{
case 0:
    print("0")
    fallthrough
case 1:
    print("1")
    fallthrough
default:
    print("other")
}

// 特点二:case后可以使用一个范围
switch value
{
case 0..<10:
    print("输出0-10之间的数值")
case 10...100:
    print("输出10-100之间的数值")
default:
    print("other")
}

/**
*   特点三:case 后可以使用 (let和var修饰的常量或者变量)where是满足某种条件
*/

switch value
{
case var i where value >= 0 && value < 6:
    i = 99
    print(i)
default:
    print("other")
}

// 特点4: case后还可以匹配一个元组
let point = (10,10)

switch point
{
case (10,0):
    print("111111")
case (10,8):
    print("222222")
case (_,10):           // _ 代表可以忽略某个元素
    print("333333")
case (10,10):
    print("4444444")
default:
    print("other")
}

// MARK: - 枚举(enum)
// 枚举原始类型为int类型的
enum Direction:Int
{
    case east = 0
    case south = 1
    case west = 2
    case north = 3
    
}

print(Direction.east.rawValue) // rawValue就是找到相对应枚举的原始值
// 枚举原始类型为String类型的
enum Season:String
{
    case spring = "春天"
    case summer = "夏天"
    case autumn = "秋天"
    case winter = "冬天"
}

print(Season.autumn.rawValue)

// 根据原始值获取枚举的类型
print(Direction(rawValue: 2))

// MARK: - 函数

// 表示函数的关键字: func
// 函数的类型有: 四种

// 1: 无返回值,无参
func function1() -> Void
{
    print("无返回值,无参数")
}

function1();

// 2: 无返回值,有参数
func function2(name str:String) -> Void
{
    print(str)
}

function2(name: "雷坤")

// 3.有返回值, 无参数
func function3() -> String
{
    return "雷神"
}

print(function3())

// 4. 有返回值,有参数
func function4(num1:Int,num2:Int) -> Int
{
    return num1 + num2
}

print(function4(5, num2: 6))

// 函数的返回值为元组类型的
func function5(num1:Int,num2:Int) -> (Int,Int)
{
    return (num1 + num2,num1 - num2)
}
print(function5(9, num2: 2))

// 外部参数和内部参数
// first和second为外部参数, 在函数调用的时候会显示出来这两个名称  one 和 two 为内部参数, 在函数内部使用
// 默认的情况下,第一个外部参数在调用的时候不显示,其余的均显示,而且和你定义的名字一样
func function6(first one:Int,second two:Int)
{
    print((one,two))
}
function6(first: 10, second: 10)

// 如果不都想显示外部参数
func function7(one:Int,_ two:Int) // "_" 忽略的作用
{
    print("忽略外部参数")
}

function7(8, 9)

// 函数的嵌套
/*
func test1()
{
    func test2(){
        func test3(){
            print("hello world")
        }
        test3()
    }
    test2()
    print("??????")
}

test1()

// inout修饰的参数
func test(inout name:String)
{
    name = "MBBoy"
    print(name)
}

var myName = "leikun"
print("myName:\(myName)")
test(&myName)
print(myName)

*/

func admin(var name:String)
{
    name = "MBBoy"
    print("nameOld = \(name)")
}

var myName = "dog"
print("myName = \(myName)")

admin(myName)
print("myName = \(myName)")
3. ? 和 ! 的区别

?的使用场景:

1)声明Optional值变量

2)在对Optional值操作中,用来判断是否能响应后面的操作

!的使用场景:

1)强制对Optional值进行拆包

2)声明隐式拆包变量,一般用于类中的属性

3)用?修饰的变量不能直接强制转型、会被标识为Optional变量等

如果你在隐式解析可选类型没有值的时候进行取值,会crash。和在没有值的可选类型里面拆包是一样的。

4.Swift和Objective-C中nil的区别

1)OC中,nil是一个指向不存在对象的指针;

2)Swift中,nil不是指针,它是一个确定的值,用于表示值缺失。任何类型的可选状态都可以设置为nil,不只是对象类型;

时间: 2024-10-25 15:56:10

Switf的基本语法的相关文章

iOS开发——switf篇&amp;经典语法(一)类型

类型 Swift 语言存在两种类型:命名型类型和复合型类型.命名型类型是指定义时可以给定名字的类型.命名型类型包括类.结构体.枚举和协议.比如,一个用户定义的类 MyClass的实例拥有类型MyClass.除了用户定义的命名型类型,Swift 标准库也定义了很多常用的命名型类型,包括那些表示数组.字典和可选值的类型. 那些通常被其它语言认为是基本或初级的数据型类型(Data types)——比如表示数字.字符和字符串——实际上就是命名型类型,Swift 标准库是使用结构体定义和实现它们的.因为它

iOS开发——switf篇&amp;经典语法(二) 表达式

表达式 Swift 中存在四种表达式: 前缀(prefix)表达式,二元(binary)表达式,主要(primary)表达式和后缀(postfix)表达式.表达式可以返回一个值,以及运行某些逻辑(causes a side effect). 前缀表达式和二元表达式就是对某些表达式使用各种运算符(operators). 主要表达式是最短小的表达式,它提供了获取(变量的)值的一种途径. 后缀表达式则允许你建立复杂的表达式,例如配合函数调用和成员访问. 每种表达式都在下面有详细论述- 表达式的语法 e

SqlServer给一个表增加多个字段语法

添加字段语法 alter table table_name add column_name +字段类型+ 约束条件 给一个表增加多个字段: use NatureData go alter table XunHu add MaleCount varchar(50) null, FemaleCount varchar(50) null, SubadultCount varchar(50) null, LarvaeCount varchar(50) null, TraceType varchar(50

MySQL(九)之数据表的查询详解(SELECT语法)二

上一篇讲了比较简单的单表查询以及MySQL的组函数,这一篇给大家分享一点比较难得知识了,关于多表查询,子查询,左连接,外连接等等.希望大家能都得到帮助! 在开始之前因为要多表查询,所以搭建好环境: 1)创建数据表suppliers 前面已经有一张表是book表,我们在建立一张suppliers(供应商)表和前面的book表对应. 也就是说 让book中s_id字段值指向suppliers的主键值,创建一个外键约束关系. 其实这里并没有达到真正的外键约束关系,只是模拟,让fruits中的s_id中

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

Linux C中内联汇编的语法格式及使用方法(Inline Assembly in Linux C)

在阅读Linux内核源码或对代码做性能优化时,经常会有在C语言中嵌入一段汇编代码的需求,这种嵌入汇编在CS术语上叫做inline assembly.本文的笔记试图说明Inline Assembly的基本语法规则和用法(建议英文阅读能力较强的同学直接阅读本文参考资料中推荐的技术文章 ^_^). 注意:由于gcc采用AT&T风格的汇编语法(与Intel Syntax相对应,二者的区别参见这里),因此,本文涉及到的汇编代码均以AT&T Syntax为准. 1. 基本语法规则 内联汇编(或称嵌入汇

Python基本语法

Python基本语法 1.第一个Python代码 print('Hello Word!') 2.注释 1.定义:注释即解释,主要用于提示相关代码的信息. 2.注释分类:单行注释和多行注释 单行注释:# 注释内容 多行注释:''' 注释内容 ''' 或 """ 注释内容 """ 3.变量 1.定义:变量就是可以改变的量 2.命名规则: 1.汉字变量名能用,不推荐使用 2.数字不能开头 3.不可以使用特殊字符,除_ 4.变量区分大小写 5.可以使用关

Java基础语法(1)

一.Java概述 1.1Java语言平台 图1-1  java语言平台 注:开发者都是安装javaSE平台的软件. 1.2.跨平台性 平台:指的是操作系统(Windows,Linux,Mac) 跨平台:Java程序可以在任意操作系统上运行,一次编写到处运行 原理:实现跨平台需要依赖Java的虚拟机 JVM (Java Virtual Machine) 图1-2 跨平台版本 1.3      JVM   JRE   JDK说明   -A:什么是JVM JVM是java虚拟机(JVM Java Vi

eclipse使用与java语法规则

eclipse的使用 1.运行点击"三角图标"或右键Run As运行2.3. java语法规范 1.括号要成对出现2.每句代码应该有分号结束3.java语法区分大小写4.一个文件只能写一个带有public的class声明,还必须和文件名一致.一个文件中不可以有多个带有public的修饰符号5.名称写的时候不要包含关键字和非法字符(字母和下划线开头可以,也可以用数字结尾)6.java代码的语法全部都是半角符号7.学会规范的写代码. 写代码的好习惯: 1.常按保存,写完一句或几句就按一次C