swift4.0 语法基础2

本文深入介绍了Swift语言的基础语法,包括断言的使用方法、可选类型的解析方式、函数定义及参数传递机制等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 断言

向 assert(_:_:) 函数传入一个结果为 true 或者 false 的表达式以及一条会在结果为 false 的时候显式的信息。

如果条件判断为 true,代码运行会继续进行;如果条件判断为 false,代码运行结束,你的应用也就中止了。

let age = -3

assert(age >= 0, "A person's age cannot be less than zero")

// this causes the assertion to trigger, because age is not >= 0

如果代码已经检查了条件,你可以使用 assertionFailure(_:file:line:) 函数来标明断言失败。

  • 可选类型(Optional)

 

可选类型是在 1,标准的类型后面加?2,或者Optional<类型>

例 var myStr:String?=“123”

或 var myStr:Optional<String> = “Hello”

(1)强制解析 :

当你确定可选类型确实包含值之后,你可以在可选的名字后面加一个感叹号( ! )来获取值。

例 if convertedNumber != nil {

    print("convertedNumber has an integer value of \(convertedNumber!).")

}
// 输出 "convertedNumber has an integer value of 123." 

 

(2)If-let 可选量绑定(Optional Binding)

来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。

例 if let actualNumber = Int(possibleNumber) {

    print("\'\(possibleNumber)\' has an integer value of \(actualNumber)")

} else {

    print("\'\(possibleNumber)\' could not be converted to an integer")

 

3)隐式解析可选类型:

把想要用作可选的类型的后面的问号( String? )改成感叹号( String! )来声明一个隐式解析可选类型。隐式解析后不需要感叹号来获取值

例 et possibleString: String? = “AAA”
let forcedString: String = possibleString! // 需要惊叹号来获取值

let assumedString: String! = “AAA”

let implicitString: String = assumedString // 不需要感叹号 

 

  • 函数

函数定义 func 函数名(参数列表)->返回值类型{

函数体

}

其中:参数列表:
[参数标签1] 形式参数1:类型,[参数标签2] 形式参数2:类型,...

(参数标签一般不写)

func add(n1 : Int, n2 : Int)->Int{

     return n1+n2

}

var n = add(n1:12, n2:13 )

  • 函数标签

可以有可以没有,没有指定时,默认把形参名当作标签。

  • 输入输出参数

两种参数传递方式

值类型

传递的是参数的一个副本,这样在调用参数的过程中不会影响原始数据。

引用类型

把参数本身引用(内存地址)传递过去,在调用的过程会影响原始数据。

在 Swift 众多数据类型中,只有 class 是引用类型,
其余的如 Int、Float、Bool、Character、Array、Set、enum、struct全都是值类型.

让值类型以引用方式传递

Swift 提供的 inout 关键字就可以实现。

func increment(_ value: inout Int, _ length: Int = 10) {

    value += length

}

 

increment(&value)

print(value)

  • 函数类型

函数的返回值用来做参数,这时只需要写函数类型不需要标签。

  • 嵌套函数

函数参数的修饰符

形式参数前默认有修饰符let

如果要改变形式参数的值,应该在定义时改成inout类型参数。

switch语句

跟c语言不同部分

1,执行完某个case后退出switch,不会顺序执行其他case的值。

2,每个case必须至少一个可执行语句

3,所有case必须能涵盖所有变量的值,否则应有default语句

  • for in 循环

循环体中参数不重要时可用_表示

var base =3 ,answer = 1, power = 10

for _ in 1...power{

answer *= base }

  • Repeat while循环

相当于(do while)

  • 转移控制语句

fallthrough 继续执行下一个case语句

内容概要:该论文研究增程式电动汽车(REEV)的能量管理策略,针对现有优化策略实时性差的问题,提出基于工况识别的自适应等效燃油消耗最小策略(A-ECMS)。首先建立整车Simulink模型和基于规则的策略;然后研究动态规划(DP)算法和等效燃油最小策略;接着通过聚类分析将道路工况分为四类,并设计工况识别算法;最后开发基于工况识别的A-ECMS,通过高德地图预判工况类型并自适应调整SOC分配。仿真显示该策略比规则策略节油8%,比简单SOC规划策略节油2%,并通过硬件在环实验验证了实时可行性。 适合人群:具备一定编程基础,特别是对电动汽车能量管理策略有兴趣的研发人员和技术爱好者。 使用场景及目标:①理解增程式电动汽车能量管理策略的基本原理;②掌握动态规划算法和等效燃油消耗最小策略的应用;③学习工况识别算法的设计和实现;④了解基于工况识别的A-ECMS策略的具体实现及其优化效果。 其他说明:此资源不仅提供了详细的MATLAB/Simulink代码实现,还深入分析了各算法的原理和应用场景,适合用于学术研究和工业实践。在学习过程中,建议结合代码调试和实际数据进行实践,以便更好地理解策略的优化效果。此外,论文还探讨了未来的研究方向,如深度学习替代聚类、多目标优化以及V2X集成等,为后续研究提供了思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值