Swift开发体验

/*:
创建对象
* OC: alloc initWithXXX 方法
* Swift: (xxx:)
*/ /*:
调用方法
* OC: [UIColor redColor];
* Swift UIColor.redColor()
*/ /*:
枚举
* OC: UIButtonTypeContactAdd
* Swift: UIButtonType.ContactAdd
*/ //[[UIView alloc] init];
//[[UIView alloc] initWithFrame: ];
//let view = UIView() let view = UIView(frame:CGRect(x: 0, y: 0, width: 100, height: 100))
view.backgroundColor = UIColor.redColor() let btn = UIButton(type: UIButtonType.ContactAdd)
btn.center = view.center
view.addSubview(btn)
  • 注释

    • Swift 的编译器将会在编译代码时自动忽略掉注释部分
    • 单行注释 //
    • 多行注释 /**/
  • 与 C 语言多行注释不同,Swift 的多行注释可以嵌套在其它的多行注释之中嵌套多行注释

    • 注释嵌套 //**//

常量和变量

常量变量

  • let 常量: 常量的值一旦设定就不能改变
  • var 变量: 变量的值可以随意更改
  • 常量&变量的使用原则:
  • 为保证数据的安全性尽量先用 let,只有需要改变的时候才使用 var

常量定义格式

  • 声明符号 常量名称: 类型标注
  • let number: Int
  • 特点: 一旦设定就不能改变

let number: Int = 10
//number = 20

定义变量格式

  • 声明符号 变量名称: 类型标注
  • var number: Int
  • 特点: 变量的值可以随意更改
  • 注意: 一般来说你很少需要写类型标注。如果你在声明常量或者变量的时候赋了一个初始值,Swift可以推断出这个常量或者变量的类型
var number2: Int = 10
number2 = 20

类型推断

  • 编译器可以在编译代码的时候自动推断出表达式的类型。(其它语言是没有类型推断)
  • 原理很简单,只要检查你赋的值即可
  • 如果没有指定表达式的类型, 也没有赋予初始值, 编译器会报错(type annotation missing in pattern)
let number3 = 10
var number4 = 20.1 // 注意点: 如果没有指定表达式的类型, 也没有赋予初始值, 编译器会报错
var number5: Int
number5 = 88

类型安全

  • Swift 是一个类型安全(type safe)的语言, 它会在编译你的代码时进行类型检查(type checks),并把不匹配的类型标记为错误。这可以让你在开发的时候尽早发现并修复错误
  • swift 对数据类型要求异常严格, swift 中任何时候,都不会做隐式转换,如果要对不同类型的数据进行计算,必须显示类型转换 注意:
  • 结合数字类常量和变量不同于结合数字类字面量。字面量8可以直接和字面量3.1415926相加,因为数字字面量本身没有明确的类型。它们的类型只在编译器需要求值的时候被推测
  • Double和CGFloat也需要转换

//let number6: Int = 10.1
let number7 = 10
let number8 = 10.1
//let sum = number7 + number8
let sum = Double(number7) + number8
let sum1 = number7 + Int(number8) // 字面量之间运算可以是不同类型
let sum2 = 10 + 10.1 // CGFloat/Double
let point = CGPoint(x: 10.10, y: 20.20)
let temp = point.x
let sum3 = Double(temp) + number8

常量和变量的命名

  • 你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符
  • 常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符
  • 也不能以数字开头,但是可以在常量与变量名的其他地方包含数字
  • ... 和C和OC一样

注意:

  • 如果你需要使用与Swift保留关键字相同的名称作为常量或者变量名,你可以使用反引号(`)将关键字包围的方式将其作为名字使用。
  • 无论如何,你应当避免使用关键字作为常量或变量名,除非你别无选择。
//let 												

Swift语法基础入门一(适合有C, OC开发人员)的更多相关文章

  1. Swift语法基础入门三(函数, 闭包)

    Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: ...

  2. Swift语法基础入门四(构造函数, 懒加载)

    Swift语法基础入门四(构造函数, 懒加载) 存储属性 具备存储功能, 和OC中普通属性一样 // Swfit要求我们在创建对象时必须给所有的属性初始化 // 如果没办法保证在构造方法中初始化属性, ...

  3. Swift语法基础入门二(数组, 字典, 字符串)

    Swift语法基础入门二(数组, 字典, 字符串) 数组(有序数据的集) *格式 : [] / Int / Array() let 不可变数组 var 可变数组 注意: 不需要改变集合的时候创建不可变 ...

  4. .net core +codefirst(.net core 基础入门,适合这方面的小白阅读) 【我们一起写框架】领域驱动设计的CodeFirst框架(一)—序篇

    .net core +codefirst(.net core 基础入门,适合这方面的小白阅读)   前言 .net core mvc和 .net mvc开发很相似,比如 视图-模型-控制器结构.所以. ...

  5. 从零3D基础入门XNA 4.0(1)——3D开发基础

    [题外话] 最近要做一个3D动画演示的程序,由于比较熟悉C#语言,再加上XNA对模型的支持比较好,故选择了XNA平台.不过从网上找到很多XNA的入门文章,发现大都需要一些3D基础,而我之前并没有接触过 ...

  6. js语法基础入门(1)

    1.基础入门 1.1.hello world 1.1.1.JavaScript是什么? JavaScript是一门跨平台.面向对象的轻量级脚本语言,在web开发中被广泛应用 1.1.2.JavaScr ...

  7. 【JAVA零基础入门系列】Day2 Java集成开发环境IDEA

    开发环境搭建好之后,还需要一个集成开发环境也就是IDE来进行编程.这里推荐的IDE是IDEA,那个老掉牙的Eclipse还是先放一边吧,(手动滑稽). IDEA的下载地址:http://www.jet ...

  8. js语法基础入门(7)

    7.数组 7.1.什么是数组以及相关概念? 什么是数组?是一组数据有序排列的集合.将一组数据按一定顺序组织为一个组合,并对这个组合命名,这样便构成了数组. 什么是数组元素?组成数组的每一个数据称为数组 ...

  9. js语法基础入门(6)

    6.函数 6.1.函数是什么? 函数就是具有名称和一定功能点代码块,这段代码块被封装起来,由一组语句组成,它们是JavaScript的基础模块单元,用于代码复用.信息隐藏和组合调用.一般来说,所谓编程 ...

随机推荐

  1. JSP基础学习(一)

    1.jsp和servlet是javaEE规范的两个基本成员,是java web开发的重要知识,jsp和servlet本质上是一样的,因此jsp最终必须编译成servlet才能运行,或者说jsp是生成s ...

  2. Java学习——接口Interface

    接口: 初期理解可以认为是一个特殊的抽象类 当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来表示.class用于定义类interface 用于定义接口 接口定义时,格式特点:1,接口中常量见定 ...

  3. COMException 依赖服务或组无法启动(0x8007042C)处理办法

    问题分析:这个问题主要原因是由于服务列表中的windows management instrumentation这个服务无法启动 问题解决办法: 点击屏幕左下角:开始-运行-输入regedit 打开注 ...

  4. node.js如何使用回调

    Node.js到处使用回调,尤其在有I/O(输入/输出)操作的地方. 下面是在一个Node.js中使用filesystem模块中从磁盘上读入文件内容示例一: var fs = require('fs' ...

  5. 读jquery.cookie.js源码学到的几个技巧

    一.兼容AMD.CommonJS和普通JS的写法 (function (factory) { if (typeof define === 'function' && define.am ...

  6. C/C++语言学习——内存分配管理

    1.一个由C编译的程序占用的内存分为以下几个部分 1.栈区(stack)— 程序运行时由编译器自动分配,存放函数的参数值,局部变量的值等.其操作方式类似于数据结构中的栈.程序结束时由编译器自动释放. ...

  7. linux----ulimit 限制

    ulimit -a 显示当前用户的各种限制. ulimit -n 的数值表示每个进程可以打开的文件数目. 一般情况下, ulimit -n 的数值是1024. 当进程打开的文件数目超过此限制时,该进程 ...

  8. 手把手教你学习FPGA系列视频教程_救护车鸣笛声

    本套教程主要面对FPGA初学者,本次DIY活动不仅让初学者掌握FPGA硬件电路设计以及焊接方面的知识,更重要的是让初学者学习硬件描述语言 (VerilogHDL)描述数字电路,以及Quartus II ...

  9. table列等宽

    固定table列等宽 固定table列等宽 style: {table-layout : fixed} html: style="table-layout:fixed" js: o ...

  10. javascript之url转义escape()、encodeURI()和decodeURI()

    我们可以知道:escape()除了 ASCII 字母.数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法.而encodeURI() 用于编码整个URI,因 ...