窥探Swift之使用Web浏览器编译Swift代码以及Swift中的泛型

简介:

   有的小伙伴会问:博主,没有Mac怎么学Swift语言呢,我想学Swift,但前提得买个Mac。非也,非也。如果你想了解或者初步学习Swift语言的话,你可以登录这个网站:http://swiftstub.com/ 。该网站可以在线运行出代码结果,也可以说这是一个在线的Playground。你可以实时观察你代码的运行结果。如果你没有Mac笔记本,那么你只需打开你的浏览器,然后输入上述网址,就可以搞搞Swift这门语言了,灰常好用的呢。下方的截图就是该网址打开的截图。

 

  上面如果算是工具性的网站的话,那么接下来将会给大家介绍一个学习网站:http://swiftdoc.org 。该网站集成了Swift的各种东西,内容虽然是英文的,但是里边的东西还是相当不错的,里边的内容也会随着Swift语言版本的更新而更新。如果你的英文比较好,那么完全可以去这个网站中去汲取你的知识。下方是该网站的一个截图,也是一个比较好的学习的地方。

  Swift中也是支持泛型的,在许多现代编程语言,如C++, Java, C#也都是支持泛型的。泛型,从表面的名字来看,就是宽泛的数据类型。使用泛型定义的方法,类,结构体,协议等可以支持不同的数据类型。泛型其实就是数据类型的占位符。当然这个占位符的名字有你来定,你定义的这个占位符就是数据类型的变量,你传给他什么类型,那么这个泛型占位符就代表什么类型。这样说来泛型理解起来就不困难了。

  今天博客中的内容算是比较简单,也是比较基础,虽简单,但失其重要性。今天博客中就通过一些示例来窥探一下泛型的使用方法和使用场景。无论你是在函数,类,协议,延展等场景中使用泛型。他们有一个共性,同时也是泛型的特点“高度重用性”。能写出高度重用的东西,在编程中是灰常令人兴奋的一件事情。

  一. 泛型函数

    1.单一占位符泛型函数

    下面就使用一个经典案例:两个数值进行交换。来使用泛型,写一个通用的函数,这个函数的功能就是交换两个变量的值。在Swift中不允许类型隐式转换,也就是说,如果你定义的该函数是交换两个整数的,那么如果你想使用他来交换浮点类型的数据,那么对不起,是不允许这样做的。为了写个通用的函数,那接下来就是泛型出场的时候了。

    下面就是使用泛型来定义一个交换两个变量的值的函数,该函数如下图所示。其中MyCustomeType就是在函数中定义的泛型占位符,改占位符表示传入的参数是什么类型,那么MyCustomeType就是什么类型。这样一来,使用泛型定义的该函数就是通用的了。在该函数中只用到了一个MyCustomeType,也就是下方的函数还是有一定约束性,就是number1和number2的类型都是相同数据类型的,这种情况也是单一占位符泛型函数。

    

    调用上述函数来交换两个字符串类型的值:

    同样的函数,你还可以使用它来交换两个整数,浮点数等等其他数据类型,下方就是交换的两个整型的数据,也是没有问题的。

 

    2.多个占位符的泛型函数

      这个是在上述函数中进行的扩充,泛型占位符允许是一个列表的形式出现的,也就是允许有多个不同的泛型占位符来代表不同的数据类型。也许说起来有些拗口,接下来就来个实例在函数中使用多个泛型占位符。具体实例如下所示。本质上允许在泛型占位符中添加多个泛型类型变量。下方的函数两个参数的数据类型允许不同,因为其参数使用的是不同的泛型占位符,所以其类型允许是不同的。具体使用方式如下所示。

 

  二.泛型类

    泛型类,顾名思义,就是在类中使用泛型。在类中使用泛型,其实和函数中使用泛型是一样的。就是在声明类的时候,使用泛型占位符表示一个要处理的泛型即可。下方就是一个泛型类,其中有个泛型类型数组,还有一个打印该数组的方法,如下所示:

 

    上面是泛型类的定义,紧接着就是泛型类的使用了,下方是创建一个泛型类的实例,然后调用相应的方法,具体如下所示。

    上面是泛型类的定义与使用,泛型还可以应用于结构体,协议,延展等,其使用方法和泛型类是差不多的,要学会举一反三。在本篇博客中就不对泛型结构体,泛型协议,泛型延展,以及泛型的约束做过多的赘述了。

相关文章
|
10天前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
使用Web浏览器访问UE应用的最佳实践
|
4月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
5月前
|
Web App开发 iOS开发
Web 浏览器
【8月更文挑战第27天】Web 浏览器。
76 2
|
2月前
|
人工智能 前端开发 计算机视觉
Inpaint-Web:纯浏览器端实现的开源图像处理工具
在刷短视频时,常看到情侣在景区拍照被路人“抢镜”,男朋友用手机将路人“P”掉,既贴心又有趣。最近我发现了一个纯前端实现的开源项目——inpaint-web,可在浏览器端删除照片中的部分内容,非常酷。该项目基于 WebGPU 和 WASM 技术,支持图像修复与放大,已在 GitHub 上获得 5.1k Star。项目地址:[GitHub](https://github.com/lxfater/inpaint-web)。
80 3
 Inpaint-Web:纯浏览器端实现的开源图像处理工具
|
2月前
|
存储 缓存 前端开发
Web端IM聊天消息该不该用浏览器本地存储?一文即懂!
鉴于目前浏览器技术的进步(主要是HTML5的普及),在Web网页端IM聊天应用的技术选型阶段,很多开发者都会纠结到底该不该像原生移动端IM那样将聊天记录缓存在浏览器的本地,还是像传统Web端即时通讯那样继续存储在服务端?本文将为你简洁明了地讲清楚浏览器本地存储技术(Web Storage),然后你就知道到底该怎么选择了。
43 1
|
3月前
|
Web App开发 XML JavaScript
Python 操作浏览器:让 Python 和 Web 世界合二为一
Python 操作浏览器:让 Python 和 Web 世界合二为一
95 3
|
5月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
96 1
|
5月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
100 0
|
5月前
|
Rust 安全 JavaScript
Rust 和 WebAssembly 搞大事啦!代码在浏览器中运行,这波操作简直逆天!
【8月更文挑战第31天】《Rust 与 WebAssembly:将 Rust 代码运行在浏览器中》介绍了 Rust 和 WebAssembly 的强大结合。Rust 是一门安全高效的编程语言,而 WebAssembly 则是新兴的网页技术标准,两者结合使得 Rust 代码能在浏览器中运行,带来更高的性能和安全性。文章通过示例代码展示了如何将 Rust 函数编译为 WebAssembly 格式并在网页中调用,从而实现复杂高效的应用程序,同时确保了内存安全性和跨平台兼容性,为开发者提供了全新的可能性。
200 0
|
5月前
|
网络安全 数据安全/隐私保护 iOS开发
【Mac os】如何在服务器上启动Jupyter notebook并在本地浏览器Web端环境编辑程序
本文介绍了如何在服务器上启动Jupyter Notebook并通过SSH隧道在本地浏览器中访问和编辑程序的详细步骤,包括服务器端Jupyter的启动命令、本地终端的SSH隧道建立方法以及在浏览器中访问Jupyter Notebook的流程。
262 0