Swift实用小册06:函数的定义、参数、返回、调用

简介: Swift实用小册06:函数的定义、参数、返回、调用

image.png

在本章中,你将学会函数的常见使用方法。

前言


Apple官网或者网上分享的教程类文章不同,我将以实际开发角度讲述Swift语言的一些概念和用法,方便大家更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识整理。


如有错误,以你为准。


我们新建一个PlayGround文件,命名为SwiftFunction

image.png

函数的定义


Swift开发过程中,我们一般说的是函数方法,即完成某一个工作(校验、业务规则等)的方法。在MVC、MVVM开发模式中,C和、VM部分承载的就是实现某个业务逻辑的函数方法,方法用关键字fun定义。示例:


//函数的定义-判断文字数量
func textChek(text:String)->Bool{
    if text.count < 1 {
        return true
    } else {
        return false
    }
}


上述代码中,我们func定义了一个textChek的方法,它需要传入一个String类型的参数text,判断text的数量count是不是小于1,如果是则返回true,如果大于等于1,则返回false


函数的参数


Swift语言中,函数的参数可以为空,也可以有多个参数,便于不同的业务场景下使用。示例:


// 函数的返回-获取plist数据文件的路径
func dataFilePath() -> URL {
    documentsDirectory().appendingPathComponent("PortraitModel.plist")
}


上述代码中,可以看到我们定义的dataFilePath方法是没有传入参数的,返回值的是一个URL地址类型。

也就是说,我们的方法可以作为一个规则进行调用,将业务逻辑都写在函数方法里,直接调用,只需要函数方法的返回结果。

MVVM开发模式的好处是,我们VM的部分可以将所有业务方法写在一个文件中,然后View页面的交互用到什么方法直接调用。

函数也可以是多参数传入的情况,像账号密码,多参数传入,最终给出结果。示例:


//函数的定义-判断文字数量
func textChek(personName:String, password:String)->Bool{
    if personName.count || password.count < 0 {
        return false
    } else {
        return true
    }
}


函数的返回


另外,我们也可以有参数传入,没有返回值,主要用于上传信息到服务器,或者写入本地文件或者缓存中。示例:

//写入本地数据
func saveItems() {
    let encoder = PropertyListEncoder()
        do {
            let data = try encoder.encode(items)
            try data.write(to: dataFilePath(), options: Data.WritingOptions.atomic)
        } catch {
            print("Error writing items to file: \(error.localizedDescription)")
        }
    }


上述的代码中,我们定义了一个saveItems方法,我们可以看到它没有返回值,它通过其他函数方法获得网络的数据,然后获取到的数据写入本地中。

另外,我们也定义函数方法并指定返回值的类型,我们使用“->”可以返回一个指定的类型的结果。示例:


// 函数的定义-判断网址合法性
func errorURL(url: String) -> Bool {
    let currrentURL = "^(https?:\\/\\/)?([\\da-z\\.-]+)\\.([a-z\\.]{2,6})([\\/\\w \\.-]*)*\\/?$"
    let regextestURL = NSPredicate(format: "SELF MATCHES %@", currrentURL)
    if regextestURL.evaluate(with: url) == false {
        return false
    } else {
        return true
    }
}

上述代码中,我们定义了一个判断url地址是否为正确网站地址的方法errorURL,通过外界传入String字符串类型的url,在方法内检验是否正确,然后return一个Bool值的结果。


函数的调用


我们定义好了函数方法,如果我们要调用函数方法,我们只需要直接在View中调用即可。示例:

// 函数的调用-判断用户昵称是否为空
if textError(text: personName) {
    self.showToastMessage = "请输入您的昵称"
    self.showToast = true
}

上述代码中,我们在View文件中,调用这个定义好的方法,传入的参数是personName用户名,如果用户名输入的字数小于1,则系统执行接下来的操作。


image.png

以上就是本章的全部内容。

快来动手试试吧!


相关文章
|
8月前
|
编译器 Swift
在Swift中定义常量(Constant)
在Swift中定义常量(Constant)
210 2
|
8月前
|
编译器 Swift
在Swift编程语言中,定义变量
在Swift编程语言中,定义变量
86 1
|
2月前
|
存储 定位技术 Swift
Swift 中的枚举与结构体,包括它们的定义、特性、使用场景及示例
本文深入探讨了 Swift 中的枚举与结构体,包括它们的定义、特性、使用场景及示例。枚举适合表示有限的、离散的状态或选项,结构体则适用于具有特定属性和行为的数据结构。两者在存储方式、继承性和灵活性上有所不同,但在实际开发中常结合使用,以充分发挥各自优势。
52 3
|
2月前
|
设计模式 安全 测试技术
Swift代码审查的关键点及最佳实践,涵盖代码风格一致性、变量使用合理性、函数设计、错误处理、性能优化、安全性、代码注释等方面,旨在提升代码质量和项目管理水平
本文深入探讨了Swift代码审查的关键点及最佳实践,涵盖代码风格一致性、变量使用合理性、函数设计、错误处理、性能优化、安全性、代码注释等方面,旨在提升代码质量和项目管理水平。通过实际案例分析,展示了如何有效应用这些原则,确保代码的高可读性、可维护性和可靠性。
38 2
|
2月前
|
安全 编译器 Swift
Swift 函数
10月更文挑战第27天
19 1
|
6月前
|
Swift iOS开发 Kotlin
苹果iOS新手开发之Swift中实现类似Kotlin的作用域函数
Swift可通过扩展实现类似Kotlin作用域函数效果。如自定义`let`, `run`, `with`, `apply`, `also`,增强代码可读性和简洁性。虽无直接内置支持,但利用Swift特性可达成相似功能。
83 7
|
7月前
|
Swift C++ 索引
Swift开发——简单函数实例
函数是编程的基础,用于封装特定功能的代码。它们有关键词func、函数名、参数列表(可为空)和返回类型。多返回值可通过元组、数组、inout参数或可选类型实现。例如,返回元组 `(value1, value2)`,数组 `[value1, value2]` 或使用可选数组 `[[Double]]?`。函数可以作为其他函数的参数,类似闭包或Lambda表达式。在Swift中,示例展示了通过元组、带索引的元组、数组和可选类型返回多个值的函数。还演示了如何使用inout参数交换变量值。
125 5
Swift开发——简单函数实例
|
8月前
Swift4.0判断本函数是否在其它类有相同的方法
Swift4.0判断本函数是否在其它类有相同的方法
49 0
|
8月前
|
存储 API Swift
【Swift开发专栏】Swift函数与闭包的实战应用
【4月更文挑战第30天】本文介绍了 Swift 中函数和闭包的实战应用。首先,函数的基本使用包括定义、参数与返回值、函数类型以及高级技巧如嵌套函数。接着,讨论了闭包的语法,包括无名函数、作为函数参数、简写形式和尾随闭包。最后,展示了函数和闭包在实战中的应用,如排序过滤集合和处理异步任务的回调。
60 0
|
8月前
|
存储 Swift
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
Swift 语言:什么是闭包(Closure)?它们与函数的区别是什么?
165 1