Swift在线运行

版本:

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

                        
以下是用户最新保存的代码
## 大作业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-03-06 09:29 实验四、学生信息查询实验 发布于: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 实验二 Swift运算符&控制流 发布于:2023-09-10 17:00 day01实验1 发布于:2023-09-05 15:27 实验一 Swift编程步骤&数据类型 发布于:2023-09-10 17:00 swift json decode 发布于:2023-08-25 11:10 get set 语法 发布于:2023-08-02 14:42 6-照片获取/拍摄 发布于:2023-06-30 19:23 5-视频教程生成 发布于:2023-06-30 19:16 2-物体识别 & 2D渲染(可后续优化为3D) 发布于:2023-06-30 19:06 1-AR互动小游戏 发布于:2023-06-30 18:44 AR基础功能函数 发布于:2023-06-30 18:15 day1-基础知识学习 发布于:2023-06-30 15:46 # swift测试学习 在这里将快速实现Swift的所有基本功能,并读懂更上一层的代码库 发布于:2023-06-21 15:04 Swift初尝试 发布于:2023-06-20 15:37 试用本系统 发布于:2023-06-14 12:16 车型识别的实现 发布于:2023-06-09 15:27 IOS第三章 发布于:2023-06-09 14:58 相册图片的显示 发布于:2023-06-09 14:54 车型识别能力的调用 发布于:2023-06-09 14:45 IOS第四章 发布于:2023-06-09 14:55 服务器设置和文件上传 发布于:2023-06-09 14:10 UILSession的用法 发布于:2023-06-09 13:59 数据JSON解析实例 发布于:2023-06-09 13:44 IOS第六章 发布于:2023-06-09 20:17 奏响乐队的凯歌 发布于:2023-06-09 13:18 五角星的绘制 发布于:2023-06-09 12:07 IOS第六章 发布于:2023-06-09 12:32 IOS第六章 发布于:2023-06-09 10:04 第六章争做车型识别达人 发布于:2023-06-09 09:59 [更多]
显示目录

扩展



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

点击购买 固件广场

Swift 扩展

扩展就是向一个已有的类、结构体或枚举类型添加新功能。

扩展可以对一个类型添加新的功能,但是不能重写已有的功能。

Swift 中的扩展可以:

  • 添加计算型属性和计算型静态属性
  • 定义实例方法和类型方法
  • 提供新的构造器
  • 定义下标
  • 定义和使用新的嵌套类型
  • 使一个已有类型符合某个协议

语法

扩展声明使用关键字 extension

extension SomeType {
    // 加到SomeType的新功能写到这里
}

一个扩展可以扩展一个已有类型,使其能够适配一个或多个协议,语法格式如下:

extension SomeType: SomeProtocol, AnotherProctocol {
    // 协议实现写到这里
}

计算型属性

扩展可以向已有类型添加计算型实例属性和计算型类型属性。

实例

下面的例子向 Int 类型添加了 5 个计算型实例属性并扩展其功能:

extension Int {
   var add: Int {return self + 100 }
   var sub: Int { return self - 10 }
   var mul: Int { return self * 10 }
   var div: Int { return self / 5 }
}

let addition = 3.add
print("加法运算后的值:\(addition)")

let subtraction = 120.sub
print("减法运算后的值:\(subtraction)")

let multiplication = 39.mul
print("乘法运算后的值:\(multiplication)")

let division = 55.div
print("除法运算后的值: \(division)")

let mix = 30.add + 34.sub
print("混合运算结果:\(mix)")

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

加法运算后的值:103
减法运算后的值:110
乘法运算后的值:390
除法运算后的值: 11
混合运算结果:154

构造器

扩展可以向已有类型添加新的构造器。

这可以让你扩展其它类型,将你自己的定制类型作为构造器参数,或者提供该类型的原始实现中没有包含的额外初始化选项。

扩展可以向类中添加新的便利构造器 init(),但是它们不能向类中添加新的指定构造器或析构函数 deinit() 。

struct sum {
    var num1 = 100, num2 = 200
}

struct diff {
    var no1 = 200, no2 = 100
}

struct mult {
    var a = sum()
    var b = diff()
}

let calc = mult()
print ("mult 模块内 \(calc.a.num1, calc.a.num2)")
print("mult 模块内 \(calc.b.no1, calc.b.no2)")

let memcalc = mult(a: sum(num1: 300, num2: 500),b: diff(no1: 300, no2: 100))

print("mult 模块内 \(memcalc.a.num1, memcalc.a.num2)")
print("mult 模块内 \(memcalc.b.no1, memcalc.b.no2)")

extension mult {
    init(x: sum, y: diff) {
        _ = x.num1 + x.num2
        _ = y.no1 + y.no2
    }
}


let a = sum(num1: 100, num2: 200)
print("Sum 模块内:\( a.num1, a.num2)")


let b = diff(no1: 200, no2: 100)
print("Diff 模块内: \(b.no1, b.no2)")

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

mult 模块内 (100, 200)
mult 模块内 (200, 100)
mult 模块内 (300, 500)
mult 模块内 (300, 100)
Sum 模块内:(100, 200)
Diff 模块内: (200, 100)

方法

扩展可以向已有类型添加新的实例方法和类型方法。

下面的例子向Int类型添加一个名为 topics 的新实例方法:

extension Int {
   func topics(summation: () -> ()) {
      for _ in 0..<self {
         summation() 
      }
   }
}  

4.topics({
   print("扩展模块内")       
})    

3.topics({
   print("内型转换模块内")       
})

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

扩展模块内
扩展模块内
扩展模块内
扩展模块内
内型转换模块内
内型转换模块内
内型转换模块内

这个topics方法使用了一个() -> ()类型的单参数,表明函数没有参数而且没有返回值。

定义该扩展之后,你就可以对任意整数调用 topics 方法,实现的功能则是多次执行某任务:


可变实例方法

通过扩展添加的实例方法也可以修改该实例本身。

结构体和枚举类型中修改self或其属性的方法必须将该实例方法标注为mutating,正如来自原始实现的修改方法一样。

实例

下面的例子向 Swift 的 Double 类型添加了一个新的名为 square 的修改方法,来实现一个原始值的平方计算:

extension Double {
   mutating func square() {
      let pi = 3.1415
      self = pi * self * self
   }
}

var Trial1 = 3.3
Trial1.square()
print("圆的面积为: \(Trial1)")


var Trial2 = 5.8
Trial2.square()
print("圆的面积为: \(Trial2)")


var Trial3 = 120.3
Trial3.square()
print("圆的面积为: \(Trial3)")

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

圆的面积为: 34.210935
圆的面积为: 105.68006
圆的面积为: 45464.070735

下标

扩展可以向一个已有类型添加新下标。

实例

以下例子向 Swift 内建类型Int添加了一个整型下标。该下标[n]返回十进制数字

extension Int {
   subscript(var multtable: Int) -> Int {
      var no1 = 1
      while multtable > 0 {
         no1 *= 10
         --multtable
      }
      return (self / no1) % 10
   }
}

print(12[0])
print(7869[1])
print(786543[2])

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

2
6
5

嵌套类型

扩展可以向已有的类、结构体和枚举添加新的嵌套类型:

extension Int {
   enum calc
   {
      case add
      case sub
      case mult
      case div
      case anything
   }

   var print: calc {
      switch self
      {
         case 0:
            return .add
         case 1:
            return .sub
         case 2:
            return .mult
         case 3:
            return .div
         default:
            return .anything
       }
   }
}

func result(numb: [Int]) {
   for i in numb {
      switch i.print {
         case .add:
            print(" 10 ")
          case .sub:
            print(" 20 ")
         case .mult:
         print(" 30 ")
         case .div:
         print(" 40 ")
         default:
         print(" 50 ")

      }
   }
}

result([0, 1, 2, 3, 4, 7])

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

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