前言

在一个工程中应该存在多个 .swift 文件用于存放不一样的程序逻辑,这篇指引是继续上一篇文章编写的。

创建一个文件

vi Greeter.swift

在 Greeter.swift 中输入以下内容

func sayHello(name: String) -> String {

return "Hello, \(name)"

}

调用 sayHello 函数

在 Swift 中,如果同属一个包内的文件,不需要 import。

编辑 main.swift

print(sayHello("Pony"))

重新执行 swift build,再次运行程序,Shell 输入Hello, Pony

获取 Shell 命令行参数

在 Swift 中,使用 Process.arguments 获取命令行输入,它是一个[String]数组,我们可以通过此数组获取命令行输入,它必然是一个 >= 1 的数组,第一个元素是程序名称自己。

将 main.swift 修改一下

let arguments = Process.arguments

if arguments.count >= 3 {

if arguments[1] == "sayHello" {

print(sayHello(arguments[2]))

}

else {

print("Use DemoProject sayHello xxx")

}

}

else {

print("Use DemoProject sayHello xxx")

}

重新编译,然后在 Shell 中执行以下命令

.build/debug/DemoProject sayHello Pony

Hello, Pony

结语

我们在本节中学习了如何使用多个文件协同构建一个工程的方法,swift 的最大好处是无须像 Objective-C 一样编写一堆无用的 import 头文件。

跨工程调用的时候,你只需要 import Package 就可以了,这会在后面继续介绍。

扩展

尝试一下执行

.build/debug/DemoProject sayHello `whoami`

linux编译多个函数,Swift on Linux —— 多文件协同编译相关推荐

  1. linux C语言access()函数(检查用户对文件的权限)(判断文件是否存在)

    文章目录 man 2 access 20220601 不知道上面所说的pathname的符号链接取消引用是什么意思 man 2 access ACCESS(2) Linux Programmer's ...

  2. linux运行getch吗,在linux中使用getch()函数

    http://blog.csdn.net/xiaoweige207/article/details/6206265 由于在Linux中没有conio.h文件,所以不能直接用getch()函数,下面介绍 ...

  3. 在linux中使用getch()函数

    #include <termio.h>int getch(void) {struct termios tm, tm_old;int fd = 0, ch;if (tcgetattr(fd, ...

  4. linux 内核flush,armv8(aarch64)linux内核中flush_dcache_all函数详细分析

    /* *  __flush_dcache_all() *  Flush the wholeD-cache. * Corrupted registers: x0-x7, x9-x11 */ ENTRY( ...

  5. linux getline参数,Linux下的getline函数

    最近在做国嵌的mp3项目,在mp3主控程序中用到了这个函数,挺好使的,在这里记录一下.注意是linux下的,不是C++中的. 函数原型 ssize_t getline(char **lineptr, ...

  6. 《Linux编程》学习笔记 ·002【Linux常用工具GCC、GDB、Make】

    注:前言.目录见 https://blog.csdn.net/qq_44220418/article/details/108428971 文章目录 一.GCC编译器 1.GCC编译程序的流程 2.GC ...

  7. 从预编译的角度理解Swift与Objective-C及混编机制

    本文从预编译的基础知识入手,由浅至深的介绍了 Objective-C 和 Swift 的工作机制,并通过这些机制来解释混编项目中使用到的技术和各种参数的作用,由此来指导开发者如何进行混编. 写在前面 ...

  8. .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析

    .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 .NET1.1中预编译ASP.NET页面实现原理浅析[1]自动预编译机制浅析 作者:&;nbsp来自:网络 htt ...

  9. Android APK+Dex文件反编译及回编译工具

    本帖最后由 zhu891108 于 2012-8-3 11:00 编辑 大家好! 相信很多人玩智能手机,无论是塞班,安卓等等,不只是看重各种软件的功能,而更多的是看重系统的可定制性,可以自己动手DIY ...

最新文章

  1. mc幻想乡java_我的世界1.7.2幻想乡整合版下载_我的世界1.7.2东方幻想乡下载_游戏之家...
  2. 如何看懂照片的直方图
  3. NSMutableString和NSString区别,及相互转换方法
  4. php自动释放mysql连接,php怎么关闭mysql连接
  5. “云网管” ---云上构建网络自动化体系
  6. 灵活、轻便,阿里开源简化GNN应用框架Graph-Learn
  7. return to dl_resolve无需leak内存实现利用
  8. Mysql:语法:标志符、关键字
  9. python中的深拷贝和浅拷贝
  10. bytes和string 与 “w“/“r“ “wb“/“rb“的对应关系
  11. 如何在ADS使用VerilogA模型,并扫描参数
  12. 如何在企业微信中使用微搭低代码
  13. Windows10使用自带表情包
  14. linux 查看用户访问ip,(总结)按时按登录IP记录Linux所有用户操作日志的方法(附脚本)...
  15. 针对前端初级学者,如何在windows下搭建react-native环境详细教程
  16. stm32mp157开发板常用系统工具使用
  17. Build file: no target in no project
  18. CSSHTMLREM制作手机端网页(小练习)
  19. 解决“ValueError: Unknown resampling filter (107). Use Image.NEAREST (0), Image.LANCZOS (1), Image.BIL”
  20. docker 中 --privileged 参数

热门文章

  1. 【JavaScript】查漏补缺 —对象转换成字符串JSON.stringify()
  2. 盘式制动优于鼓式制动吗?
  3. 咸菜可以吃吗,对健康有害吗?
  4. 想要创业有没有过来人能够指导一下
  5. 营销任何产品都只解决2个功能
  6. 为什么很多人只提苹果手机比安卓手机流畅耐用,却不提苹果手机比安卓手机贵几倍?
  7. mysql交互式查询_客户机程序5―MYSQL交互式查询程序[图]_MySQL
  8. pycharm添加python_Pycharm 复制代码出现空格的解决方式
  9. 了解SQL Server数据库静态数据及其如何适合数据库生命周期管理
  10. 如何使用Entity Framework在Always Encrypted列上模拟通配符搜索