变量声明

//变量声明
var num = 22;
var m:Int = 10;
num = 15;

常量的声明

let count = 50;
let width:Double = 12.0;
//count = 13;//count为常量 不能被改变

字符串声明

let label = "The width is";
var label1:String = "你好";

变量类型转换

swift语言中类型没有隐式转换,所有类型只能强制转换

let widthLabel = label + String(count);
var d:Double = width + Double(count);

在字符串中打印值

println(label + "\(count)");
println("this is \(count)");
println("this is \(m)");//m为Double类型
println("this is \(m + n)");//m和n都为Double类型

数组声明与使用

var shopping = ["water","paper","tulips"];//定义一个数组
println(shopping[0]);
var emptyArry = [String]();//声明一个空的String数组
shopping = [];//如果类型可以被推断的话可以这样声明一个空数组

字典的声明是使用

var occupation = [
    "hello" : "world","good" : "morning"
]

var str = occupation["good"];

var emptyDic = [String:Float]();//声明一个空的字典
var dic = [:];//类型知道的话可以这样声明一个空字典

控制语句

for语句

//for控制语句
for(var i = 0; i < shopping.count; i++) {
    println(shopping.count);
    println(shopping[i]);
}
//新型for循环
for i in 0..<3 {
    forstLoop += i;
}
相等于
for var i=0; i<3; i++ {
    forstLoop += i;
}

switch语句

switch语句不需要加break语句,语句执行以后会自动跳出。

//switch
let str1 = "hello";

switch str1 {
case "hello":
    println("hello world");
case "good":
    println("good morning");
default://default语句必须有,不然会报错
    println("error");
}

使用for in便利字典和数组

let intNumbers = [
    "one" : [2,3,4,5,5],"two" : [1,6,8],"three" : [6,89,3]
]

var largest = 0;

for(kind,numbers) in intNumbers {
//number前不用加var
    for number in numbers {
        if(number > largest) {
            largest = number;
        }
    }
}

println("the largerst number is \(largest)");

带有?号的变量声明

var optionString:String? = "hello";//表示optionString可以为nil,可以是确定值
println(optionString == nil);

var optionName:String? = "John Appleseed";
var greeting = "Hello";
if let name = optionName {//使用if let处理值缺失的情况
    greeting = "Hello,\(name)";//"Hello,John Appleseed"
}

函数

返回一个参数

//后面的String是返回值类型
func greet(name:String,day:String) -> String {
    return "Hello \(name),Today is \(day)";
}

println(greet("ttf","friday"));

返回多个参数(返回元组)

//参数是一个数组,返回值为最小值,最大值,总和
func calculte(scores:[Int]) ->(min: Int,max: Int,sum: Int) {
    var min = scores[0];
    var max = scores[0];
    var sum = scores[0];

    for score in scores {
        if score < min {
            min = score;
        }else if score > max {
            max = score;
        }

        sum += score;
    }
    return (min,max,sum);
}

let scores = [1,2,7];
calculte(scores);

可变参数的函数

//有不确定个参数
func sumOf(numbers: Int...) -> Int {
    var sum = 0;
    for number in numbers {
        sum += number;
    }
    return sum;
}

sumOf(1,3);

函数里面可以嵌套函数

//函数里面嵌套一个函数
func returnFifteen() -> Int {
    var y = 10;
    func add() {
        y += 5;
    }
    add();
    return y;
}

returnFifteen();

函数返回一个函数

函数是swift里面的一级成员,最大,所以他也可以返回一个函数

//返回值是一个函数
func makeIncrementer() -> (Int -> Int) {
    func addOne(number: Int) -> Int {
        return 1 + number;
    }

    return addOne;
}

var increment = makeIncrementer();
increment(2);//给这个函数传递参数

函数作为参数传递

func hasAnyMatches(list: [Int],condition: Int -> Bool) -> Bool {
    for item in list {
        if condition(item) {
            return true;
        }
    }
    return false;
}
//要传递的函数
func lessthanTen(number: Int) -> Bool {
    return number < 10;
}
var numbers = [20,10,56];
hasAnyMatches(numbers,lessthanTen);

函数是特殊的闭包?

//让每一个元素都乘以3
numbers.map({
    (number: Int) -> Int in let result = 3 * number;
    return result;
})

如果参数类型都已经知道,下面这种方法等价

//让每一个元素都乘以3,并打印
let mappednumber = numbers.map({number in 3 * number});
println(mappednumber);
//从大到小排列数组
let sortednumbers = sorted(numbers) { $0 > $1 };
println(sortednumbers);

类的声明与使用

声明一个类

class Shape {
    var numberOfSide = 0;
    func simpleDescription() -> String {
        return "this is \(numberOfSide)";
    }
}

类对象创建与使用

var shape = Shape();//创建类对象
shape.numberOfSide = 2;//给类的成员变量赋值
var shapeDes = shape.simpleDescription();//调用类的成员函数

类的构造方法

var shape = Shape();
shape.numberOfSide = 2;
var shapeDes = shape.simpleDescription();

class NameShape {
    var numberOfSides: Int = 0;
    var name: String;

    init(name: String) {//构造方法
        self.name = name;
    }

    func simpleDescription() -> String {
        return "this is \(numberOfSides)";
    }
}

var nameShape = NameShape(name:"ttf");//方法传递参数时,前面要加标记
nameShape.simpleDescription();

类的继承

class Square: NameShape {
    var sideLength: Double;

    init(sideLength: Double,name: String) {
        self.sideLength = sideLength;
        super.init(name: name);//不能写在前面,要保证本类中先定义的先初始化
        self.numberOfSides = 4;
    }
    func area() -> Double {
        return self.sideLength * self.sideLength;
    }

    override func simpleDescription() -> String {
        return "square sides of length is \(self.sideLength)";
    }
}

var square = Square(sideLength: 10.0,name: "ttf");
square.area();
square.simpleDescription();

类方法传参的时候需要显示说明

类中的方法和一般的函数不同,类中的方法传递参数的时候需要有标记,显示说明(第一个可以省略)

class Counter { var count: Int = 0; func increment(amout: Int,times: Int) { count += amout * times; } } var counter = Counter(); counter.increment(2,times: 4);//必须要带标记,显示声明

枚举和结构体

枚举的声明,里面也可以有方法

enum Suit {
   case one,two,tree
}

let number = Suit.one;

结构体创建

结构体和类很想同,结构体是传值,类是传引用

协议和扩展

协议声明

protocol EcampleProtocol {
    var simpleDescri: String{get};
    mutating func adjust();
}

类只要继承协议就可以实现里面的方法了

扩展

extension Int: ExampleProtocol { mutating func adjust() { self += 42; } }

【swift总结】swift语言总览的更多相关文章

  1. HTML5 WebSocket实现点对点聊天的示例代码

    这篇文章主要介绍了HTML5 WebSocket实现点对点聊天的示例代码的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

  3. ios – 声明NSDictionary并在Swift中添加键值对?

    我一直在尝试使用类类型键和值来声明一个NSDictionary,如下所示:这里,“Category”和“SubCategory”是全局类.我知道我不能将类类型用于关键字段.但是,无论如何,我应该做到这一点.有没有办法做到这一点?如何声明专门的NSDictionary或类似的东西来做到这一点?

  4. ios – 在Swift中将输入字段字符串转换为Int

    所以我非常擅长制作APP广告Swift,我试图在文本字段中做一些非常简单的输入,取值,然后将它们用作Int进行某些计算.但是’vardistance’有些东西不正确它是导致错误的最后一行代码.它说致命错误:无法解开Optional.None解决方法在你的例子中,距离是一个Int?否则称为可选的Int..toInt()返回Int?因为从String到Int的转换可能失败.请参阅以下示例:

  5. ios – Swift相当于`[NSDictionary initWithObjects:forKeys:]`

    Swift的原生字典是否与[NSDictionaryinitWithObjects:forKeys:]相当?假设我有两个带键和值的数组,并希望将它们放在字典中.在Objective-C中,我这样做:当然我可以通过两个数组迭代一个计数器,使用vardict:[String:Int]并逐步添加东西.但这似乎不是一个好的解决方案.使用zip和enumerate可能是同时迭代两者的更好方法.然而,这种方法

  6. 如何在iOS中检测文本(字符串)语言?

    例如,给定以下字符串:我想检测每个声明的字符串中使用的语言.让我们假设已实现函数的签名是:如果没有检测到语言,则返回可选字符串.因此,适当的结果将是:有一个简单的方法来实现它吗?

  7. xamarin – 崩溃在AccountStore.Create().保存(e.Account,“);

    在Xamarin.Forms示例TodoAwsAuth中https://developer.xamarin.com/guides/xamarin-forms/web-services/authentication/oauth/成功登录后,在aOnAuthenticationCompleted事件中,应用程序在尝试保存到Xamarin.Auth时崩溃错误说不能对钥匙串说期待着寻求帮助.解决方法看看你

  8. ios – 将视频分享到Facebook

    我正在编写一个简单的测试应用程序,用于将视频从iOS上传到Facebook.由于FacebookSDK的所有文档都在Objective-C中,因此我发现很难在线找到有关如何使用Swift执行此操作的示例/教程.到目前为止我有这个在我的UI上放置一个共享按钮,但它看起来已禁用,从我读到的这是因为没有内容设置,但我看不出这是怎么可能的.我的getVideoURL()函数返回一个NSURL,它肯定包含视

  9. xcode – 错误“线程1:断点2.1”

    我正在研究RESTAPI管理器.这是一个错误,我无法解决它.我得到的错误在下面突出显示.当我打电话给这个班级获取资源时:我评论的线打印:Thread1:breakpoint2.1我需要修复错误的建议.任何建议都非常感谢解决方法您可能在不注意的情况下意外设置了断点.单击并拖动代表断路器外部断点的蓝色刻度线以将其擦除.

  10. ios – 更改导航栏标题swift中的字符间距

    类型的值有人可以帮我这个或建议一种不同的方式来改变swift中导航栏标题中的字符间距吗?解决方法您无法直接设置属性字符串.你可以通过替换titleView来做一个技巧

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部