swift 下拉菜单_用Swift开发macOS程序, 二、Swift 的基础

0749bb70dc4fc850f468632b56163da8.png
学习之前你要有所准备,它不仅会花费你的一些时间,也许还会花费你的一些钱: 首先:你需要一个苹果电脑,MacBook、MacBook Pro、Mac mini都可以,MacBook Air是不行的,记住。如果你买的是iMac、iMac Pro、Mac Pro的话,请务必留下联系方式。土豪,我们交个朋友吧!钱能解决的问题都不是问题,记得有钱就买好一点的。如果你现在啥都买不起,哈哈,那你只能等到下一次了,在基于C#开发Micrsoft程序时再见,那个程序也叫“iWriter”。 其次:你需要安装Xcode,这个不要钱。听我的,点击系统左上角“”,选择下拉菜单中“App Store...”,在跳出的App Store窗体的左上角里搜索“Xcode”,找到名为“Xcode”的程序点击"获取",等待安装完成。

这里,我们即将迎来iWriter的开发之战。在吹响冲锋号之前,首先我们需要了解Swift5.1。对,你没看错,我们这里用的是Swift5.1,并会及时使用最新版本。所以你我要同步,因为大部分代码都需要你试着运行在Xcode。

来吧,启动Xcode:打开Xcode,选择“Get started with a playground”,选择“macOS”下的“Blank”,在下一步里选定保存位置,就可以了。我们开始铸造王者之剑。

如果,你有其它程序的开发经验,了解本章你只需要看下面10点。

本章讲的是函数编程部分。枚举、结构体、类下一章再讲。
  1. let声明常量。
let π:Double = 3.14 

2. 未赋值不可使用。

var name:String  // 变量声明
print(name)
// error: variable 'name' used before being initialized

3. 使用字符串用双引号或3个双引号,注意是3个双引号。

使用3个双引号包裹字符串,能保留字符串的格式。如宿进,分行
在使用3个双引号的方式中,如果某行的行末有“”符号,那表示下一行与本行是连接在一起的。
字符串字面量内,可通过“(value)”格式插入变量或常量值。类似PHP的$value.
var str = "Jiang Youhua"
var words = """
(str) is a good person.   
He is working very 
hard.
"""
print(words)
// Prints Jiang Youhua is a good person.
//        He is working very hard.
var _ = 3+4 // 

4. for 语句不同,使用for-in , 提供“...”、“..<”表示遍历的范围。

let names = ["Anna", "Alex", "Brian", "Jack"]
for name in names {
    
    // TODO
}
for i in 1...5 {
    
    // TODO
}
for i in stride(from: 0, through: 12, by: 4) {
    
    print(i)
}

5. do-while改为repeat-while。do用在错误捕捉上do-catch。

6. switch语句可以使用范围,各case默认为break,使用关键词"fallthrough"确定流入下case。

let score:Int = 95
    switch a {
    
    case 100:
        // TODO
    case 95, 96, 97, 98, 99:
        // TODO
    case 80..<95:
        // TODO
    case 62..<80:
        // TODO
    case 60, 61:
        // TODO
        fallthrough
    default:
        // TODO
    }

7. 提供Tuple。访问Tuple元素,可通过键或索引。

let result = ("Bad request", 400)      // result.0 is 'Bad request'
let person = (name: "JiangYouhua", gender: true, age:12)     // person.age is 12

8. 除Array,Dictionary之外,提供了Set。Set是同类元素的集合,不保存相同值。

var threeNumbers = [1, 3, 2] // Array
var aliasesOfCities:Dictionary = ["昆明":"春城", "上海":"魔都",] // Dictionary
var subjects:Set = ["Chinese", "English", "Mathematics", "English"]  // Set
print(subjects) // Prints ["English", "Mathematics", "Chinese"]  

9. Function保留了Objective-C的特征,调用时需要参数名。但为了与闭包协调,提供添参数别名功能,这时调用函数使用的是参数别名。然后又提供“_”符表示匆略,使用它作参数别名,调用函数可忽略参数名。

说了那么多被绕进去了,看代码吧
// 函数
func point(x:Int, y:Int)->(String, Bool){
    
    if x < 0 || y < 0 {
    
        return ("Err", false)
    }
    return ("Point.x = (x), Point.Y = (y)", true)
}
point(x:100, y:200) //(.0 "Point.x = 100, Point.Y = 200", .1 true)

// 参数使用别名
func pointOfLayout(width x:Int, height y:Int)->(String, Bool){
    
    if x < 0 || y < 0 {
    
        return ("Err", false)
    }
    return ("Point.x = (x), Point.Y = (y)", true)
}
pointOfLayout(width: 240, height: 160) //(.0 "Point.x = 240, Point.Y = 160", .1 true)

// 参数忽略别名
func pointOfWord(_ x:Int, _ y:Int)->(String, Bool){
    
    if x < 0 || y < 0 {
    
        return ("Err", false)
    }
    return ("Point.x = (x), Point.Y = (y)", true)
}
pointOfWord(320, 129) // (.0 "Point.x = 320, Point.Y = 129", .1 true)

// 可变参数
func income(_ money:Double...){
    
    var d = 0.0
    for m in money {
    
        d += m
    }
    print("The money added up to (d)")
}
income(1,2,2,2,5,5) // Prints The money added up to 17.0

10. 闭包、尾随闭包、闭包转义。

闭包的格式:{ (parameters) -> return type in statements }
/** 1. 定义一个使用闭包的函数 **/
func pointOfLayout(point:(_ x:UInt32, _ y:UInt32)->String) {
    
    let x = arc4random() % 1280
    let y = arc4random() % 960
    let a = point(x, y)
    print(a)
}

/** 2. 常规调用闭包,参考上面第5点 **/
pointOfLayout(point: {
    "point.x = ($0), point.y = ($1)"})
// Prints point.x = 1181, point.y = 382

/** 3. 尾随调用诸包,一种语法糖形式 **/
pointOfLayout{
    "point.x = ($0), point.y = ($1)"}
// Prints point.x = 1101, point.y = 531

/** 4. 当闭包未在函数内调用时,需要使用闭包转义,使用关键字:@escaping **/
var closures: [() -> Void] = []
func notCalledClosure(closure: @escaping () -> Void) {
    
    closures.append(closure) // 没有被调用,保存起来了
}

当然,你也可以跟我一起,从零开始,这个就比较长一点。

下面的swift学习教程,是精简版,是本项目开发中所必需要了解的。如果你想成为Swift的高手,那你需要《葵花宝典》,请上官网查找:[The Swift Programming Language]。
当你看到这里,还没回头,那表明你需要进一步的学习。所以确认已经打开了你的Xcode,我们将边做边学。下面的代码你都需要输入你的Playground里,运行看看。
鼠标移到行号上,点击你看到的播放图标,就可以运行当前行以上的代码。
<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值