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 中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。

我们也可以为类中继承来的属性添加属性观察器。


基类

没有继承其它类的类,称之为基类(Base Class)。

以下实例中我们定义了基类 StudDetails ,描述了学生(stname)及其各科成绩的分数(mark1、mark2、mark3):

class StudDetails {
    var stname: String!
    var mark1: Int!
    var mark2: Int!
    var mark3: Int!
    init(stname: String, mark1: Int, mark2: Int, mark3: Int) {
        self.stname = stname
        self.mark1 = mark1
        self.mark2 = mark2
        self.mark3 = mark3
    }
}
let stname = "swift"
let mark1 = 98
let mark2 = 89
let mark3 = 76

print(stname)
print(mark1)
print(mark2)
print(mark3)

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

swift
98
89
76
swift
98
89
76

子类

子类指的是在一个已有类的基础上创建一个新的类。

为了指明某个类的超类,将超类名写在子类名的后面,用冒号(:)分隔,语法格式如下

class SomeClass: SomeSuperclass {
    // 类的定义
}

实例

以下实例中我们定义了超类 StudDetails,然后使用子类 Tom 继承它:

class StudDetails
{
    var mark1: Int;
    var mark2: Int;

    init(stm1:Int, results stm2:Int)
    {
        mark1 = stm1;
        mark2 = stm2;
    }

    func show()
    {
        print("Mark1:\(self.mark1), Mark2:\(self.mark2)")
    }
}

class Tom : StudDetails
{
    init()
    {
        super.init(stm1: 93, results: 89)
    }
}

let tom = Tom()
tom.show()

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

Mark1:93, Mark2:89

重写(Overriding)

子类可以通过继承来的实例方法,类方法,实例属性,或下标脚本来实现自己的定制功能,我们把这种行为叫重写(overriding)。

我们可以使用 override 关键字来实现重写。

访问超类的方法、属性及下标脚本

你可以通过使用super前缀来访问超类的方法,属性或下标脚本。

重写 访问方法,属性,下标脚本
方法 super.somemethod()
属性 super.someProperty()
下标脚本 super[someIndex]

重写方法和属性

重写方法

在我们的子类中我们可以使用 override 关键字来重写超类的方法。

以下实例中我们重写了 show() 方法:

class SuperClass {
    func show() {
        print("这是超类 SuperClass")
    }
}

class SubClass: SuperClass  {
    override func show() {
        print("这是子类 SubClass")
    }
}

let superClass = SuperClass()
superClass.show()

let subClass = SubClass()
subClass.show()

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

这是超类 SuperClass
这是子类 SubClass

重写属性

你可以提供定制的 getter(或 setter)来重写任意继承来的属性,无论继承来的属性是存储型的还是计算型的属性。

子类并不知道继承来的属性是存储型的还是计算型的,它只知道继承来的属性会有一个名字和类型。所以你在重写一个属性时,必需将它的名字和类型都写出来。

注意点:

  • 如果你在重写属性中提供了 setter,那么你也一定要提供 getter。

  • 如果你不想在重写版本中的 getter 里修改继承来的属性值,你可以直接通过super.someProperty来返回继承来的值,其中someProperty是你要重写的属性的名字。

以下实例我们定义了超类 Circle 及子类 Rectangle, 在 Rectangle 类中我们重写属性 area:

class Circle {
    var radius = 12.5
    var area: String {
        return "矩形半径 \(radius) "
    }
}

// 继承超类 Circle
class Rectangle: Circle {
    var print = 7
    override var area: String {
        return super.area + " ,但现在被重写为 \(print)"
    }
}

let rect = Rectangle()
rect.radius = 25.0
rect.print = 3
print("Radius \(rect.area)")

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

Radius 矩形半径 25.0  ,但现在被重写为 3

重写属性观察器

你可以在属性重写中为一个继承来的属性添加属性观察器。这样一来,当继承来的属性值发生改变时,你就会监测到。

注意:你不可以为继承来的常量存储型属性或继承来的只读计算型属性添加属性观察器。

class Circle {
    var radius = 12.5
    var area: String {
        return "矩形半径为 \(radius) "
    }
}

class Rectangle: Circle {
    var print = 7
    override var area: String {
        return super.area + " ,但现在被重写为 \(print)"
    }
}


let rect = Rectangle()
rect.radius = 25.0
rect.print = 3
print("半径: \(rect.area)")

class Square: Rectangle {
    override var radius: Double {
        didSet {
            print = Int(radius/5.0)+1
        }
    }
}


let sq = Square()
sq.radius = 100.0
print("半径: \(sq.area)")
半径: 矩形半径为 25.0  ,但现在被重写为 3
半径: 矩形半径为 100.0  ,但现在被重写为 21

防止重写

我们可以使用 final 关键字防止它们被重写。

如果你重写了final方法,属性或下标脚本,在编译时会报错。

你可以通过在关键字class前添加final特性(final class)来将整个类标记为 final 的,这样的类是不可被继承的,否则会报编译错误。

final class Circle {
    final var radius = 12.5
    var area: String {
        return "矩形半径为 \(radius) "
    }
}
class Rectangle: Circle {
    var print = 7
    override var area: String {
        return super.area + " ,但现在被重写为 \(print)"
    }
}

let rect = Rectangle()
rect.radius = 25.0
rect.print = 3
print("半径: \(rect.area)")

class Square: Rectangle {
    override var radius: Double {
        didSet {
            print = Int(radius/5.0)+1
        }
    }
}

let sq = Square()
sq.radius = 100.0
print("半径: \(sq.area)")

由于以上实例使用了 final 关键字不允许重写,所以执行会报错:

error: var overrides a 'final' var
    override var area: String {
                 ^
note: overridden declaration is here
    var area: String {
        ^
error: var overrides a 'final' var
    override var radius: Double {
                 ^
note: overridden declaration is here
    final var radius = 12.5
              ^
error: inheritance from a final class 'Circle'
class Rectangle: Circle {
      ^
由JSRUN为你提供的Swift在线运行、在线编译工具
        JSRUN提供的Swift 在线运行,Swift 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。
yout