Swift在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
静态属性的意义 发布于:2024-11-27 10:32 字符串拼接 发布于:2024-11-18 11:48 必须要先点这里吗?这么多空意味着可以写很多? 发布于:2024-12-28 10:57 自然相机拍 发布于:2024-09-24 23:09 UIkit学习 发布于:2024-10-12 16:49 实操遇到的问题 发布于:2024-12-18 16:25 协议的使用 发布于:2024-09-18 13:03 不是为了记笔记 发布于:2024-11-28 11:26 探索状态值 发布于:2024-12-27 09:53 的撒大大的 发布于:2024-08-13 11:50 SwiftUI探索3 发布于:2024-12-01 10:06 study swfit 发布于:2024-08-12 18:10 swfft创建 发布于:2024-08-12 18:09 再学习,弄懂不会的 发布于:2024-11-17 13:25 swiftUI学习2 发布于:2024-11-17 14:24 swiftUI初学 发布于:2024-11-29 10:39 闭包的理解 发布于:2024-12-05 21:14 搞怪记单词 发布于:2024-12-05 16:50 高性能计算器 发布于:2024-06-05 00:42 功能一和功能二 发布于:2024-05-29 00:57 高性能计算机 发布于:2024-05-21 19:55 简单计算器 发布于:2024-05-21 16:37 这是一个测试程序 发布于:2024-04-29 16:09 类的继承实验 发布于:2024-04-25 09:53 商店点单实验 发布于:2024-04-25 09:36 1. 在Xcode集成开发环境下,编写一个完整的Swift语言程序,在该程序中,定义了四个类。首先定义了类表示食品,该类中具有三个个属性分别表示名称、价格和数量,基本的初始化器和计算原始总价和打折后的总价方法; 2. 定义了类Vegetables,表示蔬菜,在类中先为其定义初始化器。然后覆盖父类中的两个方法,分别用来计算某一蔬菜原始总价和打九折后的总价; 3. 定义了类Fruits,表示水果,在类中先为其定义初始化器。接着覆盖父类中的两个方法,分别用来计算某一水果原始总价和打八折后的总价; 4. 定义了类Meats,表示肉类,在类中先为其定义初始化器。接着覆盖父类中的两个方法,分别用来计算某一肉类原始总价和打七折后的总价; 5. 在完成上述的四个类的定义之后,分别创建类Vegetables、类Fruits和类Meats的若干实例,并分别对每一个实例进行相应的赋值。将每一个实例的原始总价和打折后的总价进行求和赋给变量sum,最后再将变量sum的值进行输出打印。 发布于:2024-04-24 08:19 高性能计算器 发布于:2024-04-24 08:03 阶段性测试,计算器 发布于:2024-04-21 19:15 ## 大作业version 1.001 使用Swift语言设计一个高性能计算器,具有以下功能: (1)基本功能(80分) (i)具有二级运算符识别功能。在控制台下输入一个表达式,例如,输入 3+5*4,可以按输入的表达式中的运算符优先级进行处理,得到23。 (ii)具有括号优先级识别功能。在控制台上输入一个表达式,例如,输入1+(3+5)*4,可以按输入的表达式中的括号和运算符串的优先级进行处理,得到33。 (iii)设计的计算器可实现实数(含整数)的加、减、乘、除、乘方和开方运算。 (2)拓展功能(20分) (i)设计的计算器可实现复数的加、减、乘、除运算,具有正弦函数计算功能; (ii)设计的计算器可实现无穷精度的整数的加、减、乘、除、求模运算(提示,使用字符串)。 备注: 建议使用图形界面实现上述功能。 发布于:2024-04-17 09:27 复数Complx ** ** 在这个程序中,handleComplexOperations 函数负责处理用户输入,并调用 parseComplexFromString 来解析输入的复数字符串,然后调用 applyOp_Complx 来执行相应的复数运算。最后,它使用 printComplex 函数来打印结果。 请注意,applyOp_Complx 函数现在检查除数是否为零,以避免除以零的错误。在实际应用中,你可能还需要添加更多的错误处理和输入验证,以确保程序的健壮性。此外,程序假设用户会按照正确的格式输入复数和操作符,没有实现复杂的错误恢复机制。在实际应用中,你可能需要增加对用户输入的校验和提示。 发布于:2024-04-17 09:09 ### 大作业 最终版本 ** ** 使用Swift语言设计一个高性能计算器,具有以下功能: (1)基本功能(80分) (i)具有二级运算符识别功能。在控制台下输入一个表达式,例如,输入 3+5*4,可以按输入的表达式中的运算符优先级进行处理,得到23。 (ii)具有括号优先级识别功能。在控制台上输入一个表达式,例如,输入1+(3+5)*4,可以按输入的表达式中的括号和运算符串的优先级进行处理,得到33。 (iii)设计的计算器可实现实数(含整数)的加、减、乘、除、乘方和开方运算。 (2)拓展功能(20分) (i)设计的计算器可实现复数的加、减、乘、除运算,具有正弦函数计算功能; (ii)设计的计算器可实现无穷精度的整数的加、减、乘、除、求模运算(提示,使用字符串)。 备注: 建议使用图形界面实现上述功能。 发布于:2024-04-17 09:38 1. 其它 1. 基于Xcode集成开发环境下,编写一个完整的Swift语言程序,该程序实现将一个简单的学生信息查找功能,首先自定义一个结构体Students,要求结构体内具有六个属性,分别表示学生的姓名、学号、性别、语文成绩、数学成绩和英语成绩,同时还有初始化器、用于计算学生总成绩的方法等等; 2. 完成结构体的定义之后,首先创建多个结构体Students实例s1、s2…,并对其进行相应的赋值; 3. 输出信息提示用户输入想要查找的学生姓名或学号,使用输入函数读取键盘的输入并将其保存在变量str中,使用if-else结构进行判断,将用户输入的信息分为姓名和学号两类分别进行查找,查找到指定的学生后,将其个人信息、各科成绩以及总成绩进行输出,若没有找到指定的学生,则输出相应的提示性信息。 提交 发布于:2024-04-17 08:15 冒泡排序小到大 发布于:2024-04-03 09:33 使用Swift语言设计一个高性能计算器,具有以下功能: (1)基本功能(80分) (i)具有二级运算符识别功能。在控制台下输入一个表达式,例如,输入 3+5*4,可以按输入的表达式中的运算符优先级进行处理,得到23。 (ii)具有括号优先级识别功能。在控制台上输入一个表达式,例如,输入1+(3+5)*4,可以按输入的表达式中的括号和运算符串的优先级进行处理,得到33。 (iii)设计的计算器可实现实数(含整数)的加、减、乘、除、乘方和开方运算。 (2)拓展功能(20分) (i)设计的计算器可实现复数的加、减、乘、除运算,具有正弦函数计算功能; (ii)设计的计算器可实现无穷精度的整数的加、减、乘、除、求模运算(提示,使用字符串)。 备注: 建议使用图形界面实现上述功能。 发布于:2024-04-03 09:58 商店点单。 发布于:2024-04-01 11:21 创建数据库 发布于:2024-03-23 08:42 输入输出程序 发布于:2024-03-20 09:08 ###.Exp1 1.编写一个完整的Swift语言程序。首先,输出语句提示用户输入一个字符串,调用输入函数读取键盘,并将读取得到的字符串赋给变量fruit; 2. 重复上一步的操作,将读取的字符串赋给变量price,对变量price进行判断,如果该字符串含有0~9以外的字符,则提示用户重新输入一个字符串,否则就将price强制类型转换为int型再赋给p1,将以十进制数形式表示的字符串转化为整数,赋给p2; 3. 创建一个非空的字典类型变量dic和一个空的数组变量arr,将变量fruit-变量price作为一组键值对,添加到变量dic中,使用for-in结构对变量dic的值进行遍历并添加到数组变量arr中,在完成循环之后,对变量arr进行删除和元素访问操作。 发布于:2024-03-13 10:00 输入与输出实验 发布于:2024-05-29 08:21 实验四、学生信息查询实验 发布于:2023-12-06 06:47 课内作业,约瑟夫算法 发布于:2023-11-20 08:55 综合性实验 发布于:2023-11-16 11:02 找出多个数组中的最大数字 发布于:2023-09-22 17:22 实验五 Swift枚举&协议&扩展&泛 发布于:2023-09-20 18:41 swift输入输出类型 发布于:2023-09-13 13:38 实验四 函数类型 发布于:2023-09-17 13:17 斐波那契数列的动态规划和递归形式 发布于:2023-09-11 14:09 day03 数组,集合,字典,字符串 发布于:2023-09-11 11:45 实验三,数组 发布于:2023-09-17 12:58 Swift运算符&控制流 发布于:2023-09-06 16:06 [更多]
显示目录

函数



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

函数

Swift 函数用来完成特定任务的独立的代码块。

Swift使用一个统一的语法来表示简单的C语言风格的函数到复杂的Objective-C语言风格的方法。

  • 函数声明: 告诉编译器函数的名字,返回类型及参数。

  • 函数定义: 提供了函数的实体。

Swift 函数包含了参数类型及返回值类型:


函数定义

Swift 定义函数使用关键字 func

定义函数的时候,可以指定一个或多个输入参数和一个返回值类型。

每个函数都有一个函数名来描述它的功能。通过函数名以及对应类型的参数值来调用这个函数。函数的参数传递的顺序必须与参数列表相同。

函数的实参传递的顺序必须与形参列表相同,-> 后定义函数的返回值类型。

语法

func funcname(形参) -> returntype
{
   Statement1
   Statement2
   ……
   Statement N
   return parameters
}

实例

以下我们定义了一个函数名为 youj 的函数,形参的数据类型为 String,返回值也为 String:

import Cocoa

func youj(site: String) -> String {
    return site
}
print(youj("www.123.cn"))

以上程序执行输出结果为:

www.123.cn

函数调用

我们可以通过函数名以及对应类型的参数值来调用函数,函数的参数传递的顺序必须与参数列表相同。

以下我们定义了一个函数名为 youj 的函数,形参 site 的数据类型为 String,之后我们调用函数传递的实参也必须 String 类型,实参传入函数体后,将直接返回,返回的数据类型为 String。

import Cocoa

func youj(site: String) -> String {
    return site
}
print(youj("www.123.cn"))

以上程序执行输出结果为:

www.123.cn

函数参数

函数可以接受一个或者多个参数,我们也可以使用元组(tuple)向函数传递一个或多个参数:

import Cocoa

func mult(no1: Int, no2: Int) -> Int {
   return no1*no2
}
print(mult(2, no2:20))
print(mult(3, no2:15))
print(mult(4, no2:30))

以上程序执行输出结果为:

40
45
120

不带参数函数

我们可以创建不带参数的函数。

语法:

func funcname() -> datatype {
   return datatype
}

实例

import Cocoa

func sitename() -> String {
    return "小白"
}
print(sitename())

以上程序执行输出结果为:

小白

元组作为函数返回值

函数返回值类型可以是字符串,整型,浮点型等。

元组与数组类似,不同的是,元组中的元素可以是任意类型,使用的是圆括号。

你可以用元组(tuple)类型让多个值作为一个复合值从函数中返回。

下面的这个例子中,定义了一个名为minMax(_:)的函数,作用是在一个Int数组中找出最小值与最大值。

import Cocoa

func minMax(array: [Int]) -> (min: Int, max: Int) {
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}

let bounds = minMax([8, -6, 2, 109, 3, 71])
print("最小值为 \(bounds.min) ,最大值为 \(bounds.max)")

minMax(_:)函数返回一个包含两个Int值的元组,这些值被标记为min和max,以便查询函数的返回值时可以通过名字访问它们。

以上程序执行输出结果为:

最小值为 -6 ,最大值为 109

如果你不确定返回的元组一定不为nil,那么你可以返回一个可选的元组类型。

你可以通过在元组类型的右括号后放置一个问号来定义一个可选元组,例如(Int, Int)?或(String, Int, Bool)?

注意
可选元组类型如(Int, Int)?与元组包含可选类型如(Int?, Int?)是不同的.可选的元组类型,整个元组是可选的,而不只是元组中的每个元素值。

前面的minMax(_:)函数返回了一个包含两个Int值的元组。但是函数不会对传入的数组执行任何安全检查,如果array参数是一个空数组,如上定义的minMax(_:)在试图访问array[0]时会触发一个运行时错误。

为了安全地处理这个"空数组"问题,将minMax(_:)函数改写为使用可选元组返回类型,并且当数组为空时返回nil

import Cocoa

func minMax(array: [Int]) -> (min: Int, max: Int)? {
    if array.isEmpty { return nil }
    var currentMin = array[0]
    var currentMax = array[0]
    for value in array[1..<array.count] {
        if value < currentMin {
            currentMin = value
        } else if value > currentMax {
            currentMax = value
        }
    }
    return (currentMin, currentMax)
}
if let bounds = minMax([8, -6, 2, 109, 3, 71]) {
    print("最小值为 \(bounds.min),组大值为 \(bounds.max)")
}

以上程序执行输出结果为:

最小值为 -6,组大值为 109

没有返回值函数

下面是 youj(_:) 函数的另一个版本,这个函数接收小白官网网址参数,没有指定返回值类型,并直接输出 String 值,而不是返回它:

import Cocoa

func youj(site: String) {
    print("小白官网:\(site)")
}
youj("http://www.123.cn")

以上程序执行输出结果为:

小白官网:http://www.123.cn

函数参数名称

函数参数都有一个外部参数名和一个局部参数名。

局部参数名

局部参数名在函数的实现内部使用。

func sample(number: Int) {
   println(number)
}

以上实例中 number 为局部参数名,只能在函数体内使用。

import Cocoa

func sample(number: Int) {
   print(number)
}
sample(1)
sample(2)
sample(3)

以上程序执行输出结果为:

1
2
3

外部参数名

你可以在局部参数名前指定外部参数名,中间以空格分隔,外部参数名用于在函数调用时传递给函数的参数。

如下你可以定义以下两个函数参数名并调用它:

import Cocoa

func pow(firstArg a: Int, secondArg b: Int) -> Int {
   var res = a
   for _ in 1..<b {
      res = res * a
   }
   print(res)
   return res
}
pow(firstArg:5, secondArg:3)

以上程序执行输出结果为:

125

注意
如果你提供了外部参数名,那么函数在被调用时,必须使用外部参数名。


可变参数

可变参数可以接受零个或多个值。函数调用时,你可以用可变参数来指定函数参数,其数量是不确定的。

可变参数通过在变量类型名后面加入(...)的方式来定义。

import Cocoa

func vari<N>(members: N...){
    for i in members {
        print(i)
    }
}
vari(4,3,5)
vari(4.5, 3.1, 5.6)
vari("Google", "Baidu", "小白")

以上程序执行输出结果为:

4
3
5
4.5
3.1
5.6
Google
Baidu
小白

常量,变量及 I/O 参数

一般默认在函数中定义的参数都是常量参数,也就是这个参数你只可以查询使用,不能改变它的值。

如果想要声明一个变量参数,可以在前面加上var,这样就可以改变这个参数的值了。

例如:

func  getName(var id:String).........

此时这个id值可以在函数中改变。

一般默认的参数传递都是传值调用的,而不是传引用。 所以传入的参数在函数内改变,并不影响原来的那个参数。传入的只是这个参数的副本。

变量参数,正如上面所述,仅仅能在函数体内被更改。如果你想要一个函数可以修改参数的值,并且想要在这些修改在函数调用结束后仍然存在,那么就应该把这个参数定义为输入输出参数(In-Out Parameters)。

定义一个输入输出参数时,在参数定义前加 inout 关键字。一个输入输出参数有传入函数的值,这个值被函数修改,然后被传出函数,替换原来的值。

实例

import Cocoa

func swapTwoInts(var a:Int,var b:Int){

    let t = a
    a = b
    b = t
}

var x = 0,y = 100
print("x = \(x) ;y = \(y)")

swapTwoInts(x, b:y)
print("x = \(x) ;y = \(y)")

以上程序执行输出结果为:

x = 0 ;y = 100
x = 0 ;y = 100
由JSRUN为你提供的Swift在线运行、在线编译工具
        JSRUN提供的Swift 在线运行,Swift 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout