swift基础

  1 // swift中导入类库使用import,不再使用<>和""
  2 import Foundation
  3
  4 // 输出
  5 print("Hello, World!")
  6
  7
  8 // MARK: - 定义常量、变量
  9 // 定义常量(使用完第一次就不能修改它了)
 10 let myGender = "男"
 11
 12 // 定义变量
 13 var carName = "BMW"
 14 carName = "Audi"
 15 print(carName)
 16
 17 // MARK: - 定义常量变量:变量类型的隐式转换
 18 // 在swift中如果定义一个常量变量不给定相关的类型,它会隐式转换成你给定的初始值类型
 19 let name = "Jack"   // 如果这样定义出来一个常量,它会隐式转换成String类型
 20 let name1 : String = "Rose"   // 如果给定类型,后边赋值的时候需要根据类型进行赋值
 21 let age : Int = 18  // 如果定义常量最好给出初始值,定义变量可以不给初始值
 22
 23 var age1 : Int?  // 表示age1的类型是可选类型,其值可以为空
 24 print(age1)
 25
 26 // 定义一个字符类型的变量
 27 var ch : Character = "A"   // 赋值字符类型的时候仅需一个字母即可
 28
 29 // 定义一个BOOL类型的变量(在swift中BOOL类型的变量只有true和false)
 30 var flag : Bool = true
 31
 32
 33 // MARK: - 字符串String
 34 // 1.创建一个空的字符串
 35 var str_empty = ""
 36 var str1_empty = String()
 37
 38 // 2.判断一个字符串是否为空
 39 if str_empty.isEmpty {
 40     print("str_empty为空字符串")
 41 }
 42
 43 // 3.字符串的拼接
 44 var str1 = "http://"
 45 var str2 = "www.baidu.com"
 46 let str_New = str1 + str2
 47 print(str_New)
 48 print("百度网址:\(str_New)")   // \(变量名)输出相关的内容【插入式取值】
 49
 50 // 4.获取字符串长度
 51 var str3 : String = "abcdef"
 52 print(str3.characters.count)
 53 print("此字符串的长度:\(str3.characters.count)")
 54
 55 // 5.字符串的比较
 56 var str4 = "wangcai"
 57 var str5 = "xiaoqiang"
 58
 59 if str4 == str5 {
 60     print("两个字符串相等")
 61 }
 62
 63 if str4 != str5 {
 64     print("两个字符串不相等")
 65 }
 66
 67 // 截取字符串
 68 var str6 = (str5 as NSString).substringWithRange(NSMakeRange(2, 4))
 69
 70
 71 // MARK: - 数组
 72 // swift中数组中的元素类型必须相同
 73 // 定义一个数组
 74 var nameArray = ["yuanyuan", "fangfang", "yaoyao"]
 75 print(nameArray)
 76
 77 var nameArray1 : Array<String> = ["weizhuang", "genie", "tianming"]
 78 print(nameArray1)
 79
 80 // 定义一个空数组(字符串)
 81 let array = Array<String>()
 82 print(array)
 83
 84 // 访问数组中的元素
 85 print(nameArray1[1])
 86
 87 // 向数组中添加元素
 88 var int_array = Array<Int>()
 89 int_array.append(18)
 90 int_array.append(20)
 91 print(int_array)
 92
 93 // 使用运算符添加数组元素
 94 int_array += [30]
 95 int_array += [25]
 96 print(int_array)
 97
 98 // 使用运算符添加多个元素
 99 int_array += [40, 50, 60]
100 print(int_array)
101
102 // 插入元素到具体的位置
103 int_array.insert(99, atIndex: 1)
104 print(int_array)
105
106 // 移除某个元素
107 int_array.removeAtIndex(3)
108 print(int_array)
109
110 // 移除所有元素
111 int_array.removeAll()
112 print(int_array)
113
114 // 移除某个范围内的元素
115 int_array.removeRange(2...5)
116 print(int_array)
117
118 // MARK: - 字典
119 // 定义一个字典类型的变量
120 var dic : Dictionary<String, Int> = ["a" : 18, "b" : 20]
121 print(dic)
122
123 // 定义空字典
124 var dic1 : Dictionary<String, Int> = [:]
125 var dic2 = Dictionary<String, Int>()
126 print(dic1,dic2)
127
128 // 向字典中插入一个键值对
129 dic ["c"] = 23
130 print(dic)
131
132 // 修改字典中的内容(根据键去修改)
133 dic["a"] = 15
134 print(dic)
135
136 // 输出字典中的某个键对应的值
137 print(dic["c"])
138
139 // 删除字典中内容(根据键去删除)
140 dic.removeValueForKey("b")
141 print(dic)
142
143
144 // MARK: - 元组
145 // 定义一个元组
146 // 方法一:直接初始化一个元组(使用swift隐式转换的特点)
147 let tuples = ("研14", ["iOS", "html5", "Android"])
148 print(tuples)
149
150 // 方法二:显示初始化的方式
151 let tuplesNew : (String, Array) = ("研15", ["盖聂", "卫庄", "天明"])
152 print(tuplesNew)
153
154 // 取出元组中的值
155 // 第一种取值方式:直接把元组赋值给另一个常量,根据相关标记进行取值
156 let tuplesNew1 : (classroom : String, name : Array) = tuplesNew;
157 var classInfo1 = tuplesNew1.classroom + tuplesNew1.name[0] + tuplesNew1.name[1] + tuplesNew1.name[2];
158 print(classInfo1)
159
160 // 第二种取值方式:直接根据下标进行取值
161 var classInfo2 = tuplesNew.0 + tuplesNew.1[0] + tuplesNew.1[1] + tuplesNew.1[2]
162 print(classInfo2)
163
164
165 // MARK: - 循环
166 // 第一种形式:
167 for var i = 1; i < 10; i++ {
168     print(i)
169 }
170
171 // 第二种形式
172 for number in 1..<10 {
173     print(number)
174 }
175
176 // 第三种形式
177 for number in 1...10 {
178     print(number)
179 }
180
181 // while循环和repeat...while
182 var i = 8
183 while i > 0 {
184     i--
185     print(i)
186 }
187
188 repeat { // 先执行一次循环体,再进行相关的循环
189     print("我爱你们")
190 }while 1 < 0
191
192 // 使用循环遍历数组
193 var animalArray = ["dog", "pig", "cat", "tiger"]
194 for animal in animalArray {
195     print(animal)
196 }
197
198 // 使用循环遍历字典
199 var animalDict = ["dog" : "??", "pig" : "??", "monkey" : "??"]
200 for (key, value) in animalDict {
201     print("key = \(key), value = \(value)")
202 }
203
204
205 // MARK: - 分支结构(if结构和switch格式)
206 // if形式
207 let flag1 = true
208 if flag1 == true {
209     print("我是真的")
210 } else {
211     print("我是假的")
212 }
213
214 // switch形式使用fallthrough实现贯穿每种可能
215 let value = 0
216 switch value {
217 case 0:
218     print("0")
219     fallthrough
220 case 10:
221     print("10")
222     fallthrough
223 default:
224     print("other")
225 }
226
227 // case后面可以使用一个范围
228 switch value {
229 case 0..<10:
230     print("输出0-10之间的数值")
231 case 10...100:
232     print("输出10-100的数值")
233 default:
234     print("other")
235 }
236
237 // case后可以使用(let和var修饰的常量或变量)[where 是满足某种条件]
238 switch value {
239 case var i where value >= 0 && value < 6:
240     i = 99
241     print(i)
242 default:
243     print("other")
244 }
245
246 // case后可以匹配一个元组
247 let point = (10, 10)
248 switch point {
249 case (10, 0):
250     print("11111")
251 case (10, 8):
252     print("22222")
253 case (_, 10):    // _代表可以忽略某个元素
254     print("33333")
255 case (10, 10):
256     print("44444")
257 default:
258     print("other")
259 }
260
261
262 // MARK: - 枚举(enum)
263 // 枚举原始类型为int类型的
264 enum Direction : Int {
265     case east = 0
266     case south = 1
267     case west = 2
268     case north = 3
269 }
270 print(Direction.east.rawValue)  // rawValue就是找到相对应枚举的原始值
271
272 // 枚举原始类型为String类型的
273 enum Season : String {
274     case spring = "春天"
275     case summer = "夏天"
276     case autumn = "秋天"
277     case winnter = "冬天"
278 }
279 print(Season.summer.rawValue, Season.autumn.rawValue)
280
281 // 根据原始值获取枚举的类型
282 print(Direction(rawValue: 2))
283
284
285 // MARK: - 函数
286 // 表示函数的关键字:func
287 // 函数的类型有四种
288 // 1.无参无返
289 func function1() -> Void {
290     print("无参无返")
291 }
292 function1()
293
294 // 2.有参无返
295 func function2(name str:String) -> Void {
296     print(str)
297 }
298 function2(name: "akai")
299
300 // 3.无参有返
301 func function3() -> String {
302     return "卫庄"
303 }
304 print(function3())
305
306 // 4.有参有返
307 func function4(num1:Int, num2:Int) -> Int {
308     return num1 + num2
309 }
310 print(function4(5, num2: 4))
311
312
313 // 函数的返回值为元组类型
314 func function5(num1 : Int, num2 : Int) -> (Int, Int, Int) {
315     return (num1 + num2, num1 - num2, num1 * num2)
316 }
317 print(function5(9, num2: 5))
318
319 // 外部参数和内部参数
320 // first和second是外部参数,是在函数外部使用的,在函数调用的时候会显示出来这两个名称,默认的情况下,第一个外部参数在调用的时候不显示,其余的均显示,而且和你定义的名字一样
321 // one和two是内部参数,在函数内部使用的,
322 func function6 (first one : Int, second two : Int) {
323     print((one, two))
324 }
325 function6(first: 10, second: 2)
326
327 // 如果都不想显示外部参数:"_"的作用是忽略
328 func function7(one:Int, _ two:Int) {
329     print("忽略外部参数")
330 }
331 function7(3,5)
332
333 // 函数的嵌套
334 func test1() {
335     func test2() {
336         func test3() {
337             print("哈哈哈哈")
338         }
339         test3()
340     }
341     test2()
342     print("有点意思")
343 }
344 test1()
345
346 // inout修饰的参数
347 func test(inout name : String) {
348     name = "卫庄"
349     print(name)
350 }
351 var myName = "yuanyuan"
352 print("myName:\(myName)")
353 test(&myName)
354 print(myName)
355
356 func Test(var name : String) {
357     name = "盖聂"
358     print(name)
359 }
360 var myName1 = "yinhao"
361 print("myName1 = \(myName1)")
362 Test(myName1)
363 print(myName1)
时间: 2024-08-13 10:52:08

swift基础的相关文章

从Pitre《Swift 基础教程2nd》开始

看了两天<Learn Objective-C on the MAC> 中文版本<Objective-C基础编程>,大概认真读到了第9章内存管理部分,感觉这语言可比C++简单多了. 第一天,因为有C语言基础的缘故,我在windows 上安装了GNUstep (Objective-C)开发环境,变看电子书籍,边在PC上编译运行树上的示例,几乎一个都没放过,还做了不少笔记. (毕竟作者 Mark Dalrymaple & Scott Knaster 是高屋建瓴,叙述技术娓娓道来,

3.Swift基础知识

Swift是用来开发iOS和OS X应用的新语言,但是许多地方用起来跟C或者OC是差不多的. Swift提供了C语言和OC的基本数据类型,比如整型用Int,浮点型用Double或者Float,布尔型用Bool,字符串文本用String,Swift还提供了两种集合类型,Array和Dictionary,后面会介绍. Swift也跟C一样用唯一的变量名来存储与使用数据,还能使用一些值不会变的变量,应该说是常量,比C里面的常量要强大.在涉及到一些值不会发生变化的数据时使用常量类型能让代码更安全整洁.

随手记Swift基础和Optional Type(问号?和感叹号!)

距离Apple推出Swift已经有几天了,网上也时不时出现"急招Swift程序员,要求有一天工作经验"的帖子. 看到Swift,除了苹果放的另外一门语言的链接(http://swift-lang.org/),还可能联想到Taylor Swift,或者铃木雨燕. 这几天网上关于Swift的话题和材料应该迅速膨胀,比如StackOverflow的相关标签,还有知乎上的一些相关讨论. 关于Swift的推出,我个人觉得对现有的使用Objective-C的iOS开发者不算是很大的冲击,毕竟写代码

Swift基础语法(常量变量、数据类型、元组、可选、断言等)

Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 Swift 的很多内容都是你熟悉的. Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Array和Dictionary,请参考集合类型. 就像 C 语言一样,Swift 使用变量来进行存储并通过变量名来关联值.在 Sw

Swift学习——Swift基础详解(四)

A:小儿编程很不好! B:多半是不爱学,从看英文版开始,让你爱上编程! Type Aliases    类型重定义(typedef) Swift中重定义类型的关键字是typealias,至于怎么用,应该不必多说了,看例子: typealias AudioSample = UInt16 //定义了一个类型名称AudioSample,代表UInt16类型 var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound is now 0 Boo

Swift基础 - - 高德地图实践(一)

高德地图开发需要自己到官网http://lbs.amap.com/console/ 注册一个ak,新建一个swift工程,然后在Info.plist中添加一个NSLocationAlwaysUsageDescription或者NSLocationWhenInUseUsageDescription. 高德地图的库以及依赖库加入到项目里面 需要的库如下截图: 添加头文件 具体的方式见Swift基础--调用第三方OC项目,在Bridging-Header.h中加入如下代码,这样我们就可以调用高德地图相

Swift学习——Swift基础详解(一)

注:由于基础部分在Swift Tour 中已经大体的说明了,所以在详解中不会达到100%的原文释义 Constants and Variables  常量和变量 常量和变量都需要声明名称和类型(作为程序员,这些基础也就不说了),常量一次赋值不能改变,变量的值可以改变 Declaring Constants and Variables   声明常量和变量 常量和变量在使用之前必须要声明,使用let关键字定义常量,var关键字定义变量 下面的例子可以用来定义用户登录的时候最大的尝试次数: let m

Swift学习——Swift基础详解(二)

上节说了没有营养的变量和常量,这玩意,都差不多,自己稍微看下就好了 Integers    整型 整数就是整数了,没有小数,整数有符号(+,-,0)或者无符号(0,+) Swift提供了8,16,32,64位的有符号和无符号的整数,命名使用C的方式,比如,8位无符号的整型UInt8,32位有符号的整型就是Int32 Integer Bounds    整型范围 可以使用min 和 max获取整数类型的最大值和最小值 let minValue = UInt8.min // minValue is

Swift学习——Swift基础详解(三)

小葵花课堂继续开讲 Numeric Literals    数字文本 数字文本有以下几种写法: A decimal number, with no prefix A binary number, with a 0b prefix An octal number, with a 0o prefix A hexadecimal number, with a 0x prefix 十进制数,无前缀:二进制数,0b前缀:八进制数,0o前缀:十六进制数,0x前缀 论数字17的N种表现形式: let deci

Swift学习——Swift基础详解(八)

Assertions    断言 可选可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况.然而,在某些情况下,如果值缺失或者值并不满足特定的条件,你的代码可能并不需要继续执行.这时,你可以在你的代码中触发一个断言(assertion)来结束代码运行并通过调试来找到值缺失的原因. Debugging with Assertions    使用断言进行调试 断言会在运行时判断一个逻辑条件是否为true.从字面意思来说,断言"断言"一个条件是否为真.你可以使用断言来保证在运行其他代