Swift-简单值
2016-04-29 17:43
489 查看
一直都觉得 Swift 有很多地方都没有 Objective-C 好(此时此刻仍是这么觉得),所以打心眼里不想学 Swift。但是师父已经开始逐步把我们公司的项目转成 Swift 了...于是我也决定(其实是为形势所迫),从今天起利用闲暇时间自学 Swift。如果有一天 Swift 真的完全替代了 OC,我会很难过。。。
使用 let 声明常量,var 声明变量。比如声明一个 Int 类型的变量 a,初始值为 3:
(每句结束不用写分号,这勉强算优点之一吧)
在 Swift 中,编译器会自动推断类型。比如:
虽然我们没有声明 a 的类型,但是 a = 3,所以编译器会推断出 a 是整型。但是下面这样是不行的:
如果像上面这样,既没有赋初值,也没有声明类型,即使之后有可以推断类型的地方,还是会报错。
注意:一个常量或者变量的类型是不能改变的。比如下面这样会报错:
编译器已经推断出 a 是整型的,但是不会再次推断然后把 a 变成 Float 类型的哦~
注意:值永远不会被隐式转换为其它类型。如果你需要把一个值转换成其它类型,请显式转换。
什么是隐式转换?比如这样:
根据上面所说的,编译器会自动推断出 str1 是字符串,str2 是整数。现在我们想让 str3 显示 "The width is 100"。如果值可以被隐式转换的话,那么在计算 str1 + str2 的时候,str2 就会被自动转换成字符串。显然在此处不可以,编译器报错了。所以我们需要显式转换。比如:
String(str2) 就是显式转换,我们把整型的 str2 转换成了字符串类型。现在就可以用 ' + ' 来连接两个字符串了。如果用 print(str3) 来打印 str3,输出结果是 "The width is 100"。
除此之外还有另一种方法可以把一个数转化为字符串:把值写到括号中,并在括号之前写一个反斜杠。看代码:
在上面这种情况下,显然 \ ( ) 这种方式更简单一些,因为后者要多写几个引号~
另外我发现了一句挺有意思的代码:
但是在文档中,比如 String 有 () 这种构造方法:
我们可以它用来初始化一个空字符串:
然而 Void 却没有:
那么为什么也能用 var d = () 或者 var d = Void() 呢???这个问题我还不知道答案,留待以后解决~
如果有一天 Swift 真的完全替代了 OC,我会很难过。。。
使用 let 声明常量,var 声明变量。比如声明一个 Int 类型的变量 a,初始值为 3:
var a : Int = 3
(每句结束不用写分号,这勉强算优点之一吧)
在 Swift 中,编译器会自动推断类型。比如:
var a = 3
虽然我们没有声明 a 的类型,但是 a = 3,所以编译器会推断出 a 是整型。但是下面这样是不行的:
如果像上面这样,既没有赋初值,也没有声明类型,即使之后有可以推断类型的地方,还是会报错。
注意:一个常量或者变量的类型是不能改变的。比如下面这样会报错:
编译器已经推断出 a 是整型的,但是不会再次推断然后把 a 变成 Float 类型的哦~
注意:值永远不会被隐式转换为其它类型。如果你需要把一个值转换成其它类型,请显式转换。
什么是隐式转换?比如这样:
根据上面所说的,编译器会自动推断出 str1 是字符串,str2 是整数。现在我们想让 str3 显示 "The width is 100"。如果值可以被隐式转换的话,那么在计算 str1 + str2 的时候,str2 就会被自动转换成字符串。显然在此处不可以,编译器报错了。所以我们需要显式转换。比如:
let str1 = "The width is " let str2 = 100 let str3 = str1 + String(str2)
String(str2) 就是显式转换,我们把整型的 str2 转换成了字符串类型。现在就可以用 ' + ' 来连接两个字符串了。如果用 print(str3) 来打印 str3,输出结果是 "The width is 100"。
除此之外还有另一种方法可以把一个数转化为字符串:把值写到括号中,并在括号之前写一个反斜杠。看代码:
let str1 = "The width is " let str2 = 100 //let str3 = str1 + String(str2) let str3 = str1 + "\(str2)"注意:此时需要加引号,对比一下,String(str2) 转换以后是不需要加引号的。
let name = 3.4 var greeting = "Hello \(name)! How are you?" greeting = "Hello " + String(name) + "! How are you?"
在上面这种情况下,显然 \ ( ) 这种方式更简单一些,因为后者要多写几个引号~
另外我发现了一句挺有意思的代码:
var d = ()我猜测它可能和下面这个一样:
var d = Void()
但是在文档中,比如 String 有 () 这种构造方法:
我们可以它用来初始化一个空字符串:
var str = String()
然而 Void 却没有:
那么为什么也能用 var d = () 或者 var d = Void() 呢???这个问题我还不知道答案,留待以后解决~
如果有一天 Swift 真的完全替代了 OC,我会很难过。。。
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 浅谈汇编器、编译器和解释器
- Apple Swift学习教程
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 让我们做个简单的解释器(三)
- 让我们做个简单的解释器(一)
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 苹果与Siri的七年之痒:“宫斗”戏码不断上演
- 用 350 行代码从零开始,将 Lisp 编译成 JavaScript
- 介绍 Fedora 上的 Swift
- 央视新闻报道XcodeGhost事件
- 原生JS仿苹果任务栏菜单,放大效果的菜单
- 讲解iOS开发中基本的定位功能实现
- iOS中定位当前位置坐标及转换为火星坐标的方法