Swift再浪一波,快来快来

自己理解老师所说的!

var myset: Set<Int> = [1,2,3,3];//set集合是无序集合

var arr = [1,2,3];//Array有序集合

var dic = [1:"a",2:"b"];//字典是无序集合

for item in arr { //1.得到Array的长度

print(item)

}

for (index,value) in arr.enumerate() { //2.得到Array的长度

print("index is\(index) value is\(value)")

}

for (key,value) in dic {  //得到字典里的长度

print("\(key) \(value)")

}

for k in dic.keys {  //遍历字典里面所有的键

print(k);

}

for v in dic.values {//遍历字典里面所有的值

print(v);

}

//类的声明

//类是一个引用类型,也就是说类的实例是分配到堆中

//类:属性,方法,构造函数,析构函数,索引器(subscript)

class Person {

//存储属性,在创建的时候就回给其值

//属性观察器

var p = 20;

let p2 = 40;

var name = "ch" {

willSet {//赋值之前会调用willSet里面的内容

print("before");

print(newValue); //这是新赋的值

print(name);//这是原本name的值

}

didSet(old) {//赋值之后会调用willSet里面的内容。这里(old)是自定义print(old)里的名字的

print("after");

print(old);//这是原本的name值

print(name);//这是新赋值的name

}

}

//计算属性,get,set

//不能只有set,只有get的时候,表示只读计算属性,可以简写

//计算属性是没有属性观察者的

//计算属性是只能是var定义,不能用let定义,也不需要一开始就复制,没有必要

//计算属性是不需要属性观察器的,里面是可以写多行代码的

var age: Int {

get {

return 100;

}

set {

}

}

//只读计算属性

var readOnlyAge: Int {

get {

return 100;

}

}

//只读计算属性还可以这样定义

var readOnlyAge2: Int {

//这里是可以写多行代码的

return 100;

}

init() {

//这是Swift的初始化时调用的方法(自动)

print("init");

}

deinit {

//这是Swift的销毁时调用的方法(自动)

print("deinit");

}

}

var p = Person();

p.name = "cx";

p.age = 30;

p = Person();

//p.p2 = 50; //这里报错 let定义的p2的值是不可以被修改的

let p2 = Person();//常量指针

p2.p = 60;

//p2.p2 = 70;//这里报错 let定义的p2的值是不可以被修改的

//p2 = Person;let  p2 = Person() 表明p2的值不能改变了,这个p2 = Person就是表示重新给p2赋值了。 所以错误

//三个等号是判断两个变量是否指向同一个对象

var p3 = Person();

p === p3;

var p4 = p ;

p4 === p;

class A {

init() {

print("a init");

}

}

class B {

lazy var p = A();

}

let b = B();// 使用lazy可以使不必要或复杂的初始化不总是进行,一些储存属性的初始化很费时,加lazy时合理的

//修饰为静态可以用这两个属性:class,static

//存储属性,只能用static,计算属性两个关键字都可以用

//方法也是两个关键字都可以

//区别在于:class修饰的表示子类继承父类后可以重写这些静态成员

class Image {

static var name = "my";//存储属性

//sclass var name2 = "aaa";//错误 存储属性不能用class修饰

static var Age:Int {

get {

return 100;

}

set {

}

}

static func someMethod() {

//静态方法中的self不是指类的实例,而是指类本身

  //self出现在静态成员中时self指的是类本身,否则就是实例

}

class func someMethod2() {

}

}

class xiangCe {

var images = [1,2,3,4,5];

//下标 subscript,可以有多个参数

subscript(index: Int) ->Int {

get {

return images[index];

}

set {

images[index] = newValue;

}

}

func getImage(index: Int) -> Int {

return images[index];

}

}

var xc = xiangCe();

xc[0] = 1200; //通过下标修改下标对应的值

xc[0];

xc.getImage(0)

//全局变量和本地变量的定义

//全局变量:在类外面定义,作用于整个项目

//本地变量:在类里面或者方法里面定义,作用于类,和方法里

时间: 2024-10-19 22:40:35

Swift再浪一波,快来快来的相关文章

OpenGL快问快答

OpenGL快问快答 本文内容主要来自对(http://www.opengl.org/wiki/FAQ)的翻译,随机加入了本人的观点.与原文相比,章节未必完整,含义未必雷同,顺序未必一致.仅供参考. 我写这个是为了加深印象,好记性不如烂笔头,好记星不如烂键盘. +BIT祝威+悄悄在此留下版了个权的信息说: 名词术语 渲染:等于"画",等于"draw". OpenGL是什么? OpenGL是Open Graphics Library(开源图形库)的缩写.它是一本说明书

浅谈快读快写

前言 不用快读的卡常都是耍流氓 by do_while_true 众所周知,在一些比较高档次的题中有时候毒瘤出题人会卡时间复杂度,或者出一些比较大的样例,从而激励我们不断地优化程序,但是有些OIer想不出更好的程序 其实就是太菜,可是又想尽可能地多拿分,那应该怎么办呢?这里就需要OIer进行卡常了 而输入输出的优化则是卡常的一个特别好用的方法 正篇 1.cin及cout 众所周知,cin,cout是特别慢的 可是为什么cin,cout会比其它的输入输出慢很多呢 cin,cout之所以效率低,是因

fzu Problem 2198 快来快来数一数 (快速幂+优化)

题目链接: Problem  2198  快来快来数一数 题目描述: 给出n个六边形排成一排,a[i]代表i个六边形能组成的生成树个数,设定s[i]等于a[1]+a[2]+a[3]+....+a[i-1]+a[i],问s[n]为多少? 解题思路: n取值范围[1, 1018],打表内存不够,然后就要考虑快速幂咯!纳尼!!!!快速幂写出来竟然超时,敢信?果然还是见题太少了.(GG) 对于a[n] = 6*a[n-1] - a[n-2],可以很明显看出. 然后求和的时候就要化简一番了,但是并不是很难

再战斐波那契-Fibonacci+gcd

再战斐波那契 单点时限: 1.0 sec 内存限制: 512 MB 小z 学会了斐波那契和 gcd 后,老师又给他出了个难题,求第N个和第M个斐波那契数的最大公约数,这可难倒了小z ,不过在小z 的再三请求下,老师又告诉他了个条件,gcd(N,M)∈[1,90].可是,笨拙的小z 还是不会,于是请求你帮他解答这个问题. 输入格式: 输入包括 T 组,T∈[1,10]. 接下来 T 行,每行两个整数 N,M, 表示斐波那契的第 N 项和第 M 项,(N,M∈[1,1018]). 输出格式: 输出包

快看Sample代码,速学Swift语言(2)-基础介绍 快看Sample代码,速学Swift语言(1)-语法速览

快看Sample代码,速学Swift语言(2)-基础介绍 Swift语言是一个新的编程语言,用于iOS, macOS, watchOS, 和 tvOS的开发,不过Swift很多部分内容,我们可以从C或者Objective-C的开发经验获得一种熟悉感.Swift提供很多基础类型,如Int,String,Double,Bool等类型,它和Objective-C的相关类型对应,不过他是值类型,而Objective-C的基础类型是引用类型,另外Swift还提供了几个集合类型,如Array, Set, 和

ffmpeg+sdl教程----编写一个简单的播放器7(处理快进快退命令)

来源:http://blog.csdn.net/mu399/article/details/5818970 这篇教程例子中的程序,让右方向按键为快进10秒,上方向按键为快进60秒,左方向按键为快退10秒,上方向按键为快退60秒,程序中的 av_seek_frame函数可能是用错了,或者函数本身的问题导致按上和右都没反应;按左和下让画面暂停,声音在很短区间内不停播放,这时再按右和下 才正常. [cpp] view plaincopy #include "libavformat/avformat.h

Atom编辑器折腾记_(23)加快React开发的插件汇总【浪一波】

前言 汇总下比较实用的atom插件[偏react开发的]-- 暂时应该没有比我更全面的!嘎嘎 atom-react-autocomplete–项目内,组件名及状态的自动补全 autocomplete-js-import–模块导入智能提示 emmet-jsx-css-modules– React内的Emmet补全,非单纯的expand[class => className ]!! language-javascript-jsx – JavaScript, ES6, ES7, React JSX,

卡常三连(快读快写+re)

快读: 1 inline int in() 2 { 3 char ch; 4 int a=0; 5 while(!(((ch=getchar())>='0')&&(ch<='9'))); 6 a*=10;a+=ch-'0'; 7 while(((ch=getchar())>='0')&&(ch<='9'))a*=10,a+=ch-'0'; 8 return a; 9 } 快写: inline void out(int a) { if(a>=10

快来看 快来看 看到了就是赚到了

请把我带回你的家,请把你的工作留下! 软敏捷开发框架V7.0全新升级功能更全,运行更稳定.新版本增加了多语言,首页动态设置.移动端代码生成以及大量实用组件. IM.工作流.代码生成器也进行了重构,用起来好得不得了! 还等什么,快去官网看看吧!http://www.learun.cn 主要更新的功能: 新增 1.多语言功能: 2.代码生成器模版: a.可编辑列表代码生成器(Excel风格)模版: b.报表现实代码生成器模版: 3.树形代码生成功能: 4.动态配置首页功能: 5.外部邮件收发功能: