Swift学习之中的一个:常量与变量

正在学习swift中,看了一遍英文文档,如今是在看第二遍,顺便总结出一些知识点。假设有哪里说明值得质疑的地方,请留言/回复指出,谢谢!

常量与变量都会有一个关联的名字(如maximumNumberOfLoginAttempts或者welcomeMessage),

有特定的类型(如数字10或者字符串"Hello")。常量的值一旦设置就不能再改动,而变量的值

在将来是能够改动为不同的值的。

声明常量与变量

常量与变量在使用前必须先声明。使用letkeyword声明常量,而变量是使用varkeyword来声明。

看以下的样例:

// 分号加不加都行,假设看不习惯,能够自行加入
// 声明了一个名叫maximumNumberOfLoginAttempts的常量,由于没有指定类型。而又进行了初始化,其值为10。
// 所以swift会自己主动判断出常量maximumNumberOfLoginAttempts的类型为Int
// 这个写法相当于:let maximumNumberOfLoginAttempts: Int = 10
let maximumNumberOfLoginAttempts = 10
// 声明的currentLoginAttempt是一个变量。在其它地方能够改动这个变量的值
// 这里没有显示指定变量的类型,但由于有了初始值0,因此Swift会判断出这个变量的类型为Int
// 因此以下的写法相当于:var currentLoginAttempt: Int = 10
var currentLoginAttempt = 10

能够在一行声明多个变量,变量之间用逗号隔开
// swift在判断浮点类型时,默认会使用Double类型,以下相当于:
// var x: Double = 0.0, y: Double = 0.0, z: Double = 0.0
var x =

NOTE

假设在你的代码中不希望某个储存的值发生改变。那么总是用letkeyword声明为常量。

使用变量仅仅用于值须要改变的。

类型说明(Type Annotation)

上面的凝视中已经用到了类型说明,事实上就是在声明变量或者常量的同一时候显示指定变量或者常量的类型

// 这样写法是错误的,由于我们没有指定类型。而swift又没有详细的初始值来推断
// 我们希望这个变量的类型
var welcomeMessage //Error

那么我们有两种方式处理。一种是给定一个初始值让swift帮助我们推断出类型,还有一种是我们显示指定类型
var welcomeMessage: String // 我们想要的是String类型
var welcomeMessage = "Hello" // swift会依据这个初始值推断出类型为String

NOTE

在实际的工作中,非常少须要写明类型说明。假设在定义变量或者常量的时候就提供了初始值,

那么Swift总是会判断出该变量或者常量的类型。

命名常量、变量

swift中能够使用Unicode字符

let n = 3.14159
let 你好 = "你好,Swift" // 尽管能够用中文作为变量名。但我不建议这么做。

。。

个人建议

打印常量、变量

// 在swift中打印语句能够用println,print
// 前者是打印最后加入了一个换行。后者则没有加入
println(welcomeMessage) // 会换行
print(welcomeMessage)   // 不会换行

// 注意到这里打印的方式了吗?使用\()把变量放到括号里
println("The welcomeMessage is \(welcomeMessage)")
		
时间: 2024-10-08 08:16:40

Swift学习之中的一个:常量与变量的相关文章

swift学习笔记一之常量和变量

本系列笔记是博主通过观看慕课网liuyubobobo讲师主讲的<玩儿转swift2.0>的课堂学习笔记并整理课堂上讲到的代码,也可通过慕课网app观看他的视频支持他,讲师的所有课堂代码在github上,以及更新的swift3.0的代码,建议还是先过一遍老师的视频,然后再自己敲一遍课堂代码,再反过来复习,相信一定有很大的帮助. 在OC语言中,变量在声明之前要指明其类型,如 NSString *name = @"liuyubobobo"; 但是swift类型中,当然变量也有指定

netty深入学习之中的一个: 入门篇

netty深入学习之中的一个: 入门篇 本文代码下载: http://download.csdn.net/detail/cheungmine/8497549 1)Netty是什么 Netty是Java NIO之上的网络库(API).Netty 提供异步的.事件驱动的网络应用程序框架和工具,用以高速开发高性能.高可靠性的网络服务器和客户端程序. 2)Netty的特性 统一的API.适用于不同的协议(堵塞和非堵塞).基于灵活.可扩展的事件驱动模型.高度可定制的线程模型.可靠的无连接数据Socket支

Swift基础使用方法(Swift开发之中的一个)

昨晚苹果公布了新一代编程语言Swift,官方提供了一个iBook的说明文档.有须要的能够看下. 地址:https://itunes.apple.com/cn/book/swift-programming-language/id881256329?mt=11 以下我先说下主要的一些东西,大家都是刚看,所以我也难免会出现理解错误的地方.欢迎指出.当然你也能够直接看官方的文档. 一.let,var基本类型 let:常量,不能二次赋值.赋值时能够不须要指定类型,编译器依据赋值自己主动推断.也能够手工指明

Dart语言学习(二) Dart的常量和变量

1.使用var声明变量,可赋予不同类型的值 2.未初始化时候,默认值未null var a; print(a); a = 10; print(a); a = 'Hello Dart'; print(a); 输出: null 10 Hello Dart 3. 使用final声明一个只能赋值一次的变量 4. 使用const声明常量 使用const声明的必须是编译器常量 5.声明变量的方式 var : [编译期]确定[变量类型] dynamic : [运行期]确定[变量类型] bool int dou

Swift学习的第一个demo,讲解了一些常用的知识点

/** 1. OC [UIView alloc] initWithXXX:] Swift UIView(XXX:) 类名() == alloc / init 等价 2. 类方法 OC [UIColor redColor] Swift UIColor.red 3. 访问当前对象的属性,可以不使用'self.' 建议:都不用,在编译器提示的时候,在添加,会对'语境'有更好地体会 原因:闭包(类似于OC中的block),需要使用'self.' 4. 没有';' ';' 的目的是分割语句的,在Swift

Python 学习之中的一个:在Mac OS X下基于Sublime Text搭建开发平台包括numpy,scipy

1 前言 Python有许多IDE能够用,官方自己也带了一个,Eclipse也能够. 但我在使用各种IDE之后,发现用Sublime Text是最好用的一个.因此.我都是用Sublime Text来编写Python程序. 那么整个搭建事实上很easy.考虑到接下来要做的是科学研究,我们也同一时候安装numpy.scipy,matplotlib等插件. 2 开发环境 Macbook Pro Mac OS X 10.10 3 Step-by-Step 搭建 Step 1 安装Python 2.7 这

SSH学习之中的一个 OpenSSH基本使用

在Linux系统中.OpenSSH是眼下最流行的远程系统登录与文件传输应用,也是传统Telenet.FTP和R系列等网络应用的换代产品. 当中,ssh(Secure Shell)能够替代telnet.rlogin和rsh,scp(Secure Copy)与sftp(Secure FTP)能后替代ftp. OpenSSH採用密钥的方式对数据进行加密,确保传输数据的安全.在正式開始传输数据之前,两方首先要交换密钥,当收到对方的数据时.再利用密钥和对应的程序对数据进行解密. 这样的加密的传输数据有助于

mysql学习之中的一个:mysql安装

我用的时mac系统,本来想在mac系统上装一个,可是发现mac系统始终无法用password登入到本机server,很奇怪的问题(在stackflow上看了些回复,也没有找到原因),最后仅仅好装到虚拟机上面去了. 我的虚拟机版本号是centos6.3,yum中自带了安装包. CentOS6和RHEL6系统的YUM中包括了MySQL安装包,版本号是MySQL5.rpm软件包的名称是mysql-server. 使用下面命令能够安装MySQL数据库: yum install -y mysql-serv

Oschina 安卓client源代码学习之中的一个

今天主要研究一下两个功能 (1)双击返回键退出程序 (2)接近完美地退出程序 (1) 在非常多应用程序里都有一个功能,就是点击返回键,之后提示你再点击返回键就退出程序. 之前一直非常好奇这是怎么实现的,今天正好把开源中国安卓client源代码扒下来了,所以就在这里研究一下这个非常easy的功能. public class DoubleClickExitHelper { private final Activity mActivity; private boolean isOnKeyBacking