【Swift学习】Swift编程之旅(一)

  学习一门新语言最经典的例子就是输出“Hello World!”

print("Hello World!")  swift就是这样来输出的。

如果你使用过其他语言,那么看上去是非常的熟悉吧。但比一些c要简单的多吧

1、不需要导入一些单独的库,比如输入/输出或字符串处理功能的类库,

2、不需要在全局范围内编写的代码用于作为入口点程序,所以你不需要 main()函数,

3、不需要写在每个语句的末尾的分号。这样写是不是很简单~

 

  简单值

使用let来声明一个常量,var声明一个变量。一个常量值在编译时无须知道,但你只能赋值一次,我们需要在声明时赋值,如果多次赋值会发生编译错误,如下图

一个变量值可以在声明时赋值,也可以在以后赋值。

常量或者变量的类型必须和赋给它们的值一样。然而,声明时类型是可选的,声明同时赋值的话,编译器会自动推断类型。在上面的例子中,编译器推断出var1是一个整数(integer)因为它的初始值是整数。

如果初始值没有提供足够的信息(或者没有初始值),那你需要在变量后面声明类型,用冒号分割。
数值不会被隐式转换为其他类型,必须显式转换,例如转换为字符型
若不显式转换会发生编译错误,如下图
最简单的转换为把值写到括号中,并且在括号之前写一个\
常量和变量的命名规则
1.你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符
即使你使用中文常量名也是毫无问题的
2.常量与变量名不能包含k数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符
3.不能以数字开头
4.一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
5.避免使用关键字作为常量或变量名
数组和字典
使用[]来创建数组和字典,通过数组索引或字典的键(key)来访问元素。元素之间使用逗号分隔。
var shoppingList = ["catfish", "water", "tulips", "blue paint"]
shoppingList[1] = "bottle of water"var occupations = ["Malcolm": "Captain","Kaylee": "Mechanic",
]
occupations["Jayne"] = "Public Relations”

 我们看一下结果

 

OK!和我们预期的一样。

 

下面我们创建一个空的数组和字典

let emptyArray = [String]()//创建一个元素为字符类型的数组
let emptyDict = [String:float]()//创建一个key为字符类型,值为浮点类型的字典

 

如果类型可以被推断出来,你可以使用[]和[:]来创建空的数组和字典。

 

  控制流

使用if和switch执行条件操作,使用for-in ,for,while,repeat-while执行循环操作。条件或循环变量的圆括号是可选的,但是语句体的大括号({})是必须的.

let individualScores = [75, 43, 103, 87, 12]
var teamScore = 0
for score in individualScores {if score > 50 {teamScore += 3} else {teamScore += 1}
}
print(teamScore)//输出11

 

在if语句中条件必须是一个布尔(Boolean)表达式。在这里我们明晰可以看出swift语法的简洁。

var optionalString: String? = "Hello"
print(optionalString == nil)var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {greeting = "Hello, \(name)"
}

 

 输出结果:

false。

Hello, John Appleseed

因为optionalString和optionalName都是有具体的值,但如果optionalName=nil的话,那么greeting输出结果为Hello!

 

var optionalName: String? = "John Appleseed"
var greeting = "Hello!"
if let name = optionalName {greeting = "Hello, \(name)"
}
else{
greeting = "Hello,匿名"
}

 

输出结果

false

Hello,匿名

 

switch支持任意类型的数据和各种比较操作,它不局限于整数和相等的测试

let vegetable = "red pepper"
switch vegetable {
case "celery":print("Add some raisins and make ants on a log.")
case "cucumber", "watercress":print("That would make a good tea sandwich.")
case let x where x.hasSuffix("pepper"):print("Is it a spicy \(x)?")
default:print("Everything tastes good in soup.")
}

 

 

输出结果为

Is it a spicy red pepper?

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/salam/p/5351314.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573752.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

孔夫子二手书采集

文章目录 项目演示软件采集单本数据网页搜索数据对比 使用场景概述部分核心逻辑Vb工程图数据导入与读取下拉框选择参数设置线程 使用方法下载软件授权导入文件预览处理后的数据 项目结构附件说明 项目演示 操作视频详见演示视频,以下为图文演示 软件采集单本数据 …

java总结体会_Java课程总结心得体会

不知不觉中以学习Java将近4个月了,在这几个月的学习中我从一开始的迷茫懵逼,到现在的懵逼迷茫中,写下了这篇这个学期课程的Java学习心得体会。首先,我认为作为一个该开始学习Java的小白,在开始学习之前无论你有多大的热…

为什么用redis做缓存而不是mybatis自带的缓存_如何用Java设计一个本地缓存,涨姿势了...

最近在看Mybatis的源码,刚好看到缓存这一块,Mybatis提供了一级缓存和二级缓存;一级缓存相对来说比较简单,功能比较齐全的是二级缓存,基本上满足了一个缓存该有的功能。当然如果拿来和专门的缓存框架如ehcache来对比可能…

process 类 java_编写可执行jar——java的Process类的使用(二)

你知道怎么在控制台使用ping吗?那你知道怎么在java中使用ping吗?1.批处理文件批处理文件大家一定不陌生。接触最多的应该就是tomcat中的start.bat或者start.sh了。bat是在windows环境下运行的批处理文件,sh则是linux的shell脚本。2.adb指令安…

python从爬虫到数据分析项目_零基础学习Python web开发、Python爬虫、Python数据分析,从基础到项目实战!...

随着大数据和人工智能的发展,目前Python语言的上升趋势比较明显,而且由于Python语言简单易学,所以不少初学者往往也会选择Python作为入门语言。Python语言目前是IT行业内应用最为广泛的编程语言之一,尤其是近几年来随着大数据和人…

java filedialog 打开文件_java 用文件对话框打开文件

//文件的打开import java.awt.FileDialog;import java.awt.event.*;import java.io.*;import java.io.File;import java.io.FileReader;public class FileOpen {private FileDialog filedialog_open;private String fileopen null, filename null;// 用于存放打开文件地址 和…

2782: [HNOI2006]最短母串

2782: [HNOI2006]最短母串 Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 3 Solved: 2[Submit][Status][Web Board]Description 给定n个字符串(S1,S2,„,Sn),要求找到一个最短的字符串T,使得这n个字符串(S1,S2,„,…

c java 内部类_java程序中能否在内部类当中再定义一个内部类?

展开全部我被你的想62616964757a686964616fe78988e69d8331333363386664法震撼了,哈哈.亏你想的出来...这么弄代码不好理解,Java看起来醒目,也是Java中的一个规范!可以吗?必须可以..看代码演示...声明下,我也第一次,多次嵌套,看你想法后去试验下是可行的我用的两种办法!不多说看…

pythongui做计算器_python 实现简单的计算器(gui界面)

运行效果:完整代码from tkinter import *def click(num):global opopopstr(num)iptext.set(op)def evaluate():global opoutputstr(eval(op))iptext.set(output)def clearDisplay():global opop""iptext.set(op)calcTk()calc.title("TechVidvan Calc…

ios学习笔记——RunTime

Objective—C是面向运行时的语言,就是说它会尽可能的把编译和链接时要执行的逻辑延迟到运行时。这就给你很大的灵活性,你可以按需要把消息重定向给合适的对象,你甚至可以交换方法的实现。最重要的还是消息机制。 C语言使用“静态绑定”&#…

exhaustion java_Java Player.setExhaustion方法代碼示例

import org.bukkit.entity.Player; //導入方法依賴的package包/類/*** Set SamaGamesAPI*/Overridepublic void startGame(){this.getInGamePlayers().forEach(((uuid1, survivalPlayer) -> survivalPlayer.getPlayerIfOnline().closeInventory()));super.startGame();Objec…

python内存池机制_python的内存管理机制

一、python是一个什么样类型的语言1、python是一种动态解释性强类型定义的高级、通用性编程语言。解释型:执行的时候,才一条一条的解释成机器语言给计算机来执行。如:python、js、ruby、PHP等编译型:把源程序的每一条语句都编译成…

MATLAB GUI不同控件函数间变量传递方法

在GUI中一个控件函数结束后,会将在这个函数中使用的变量全部删除,如果想在另一个控件中使用,则必须想办法将这个变量保存传递,方法有以下几种:1、使用globe定义全局变量,这种方法不是很好,一方面…

java变量数据类型_java变量与数据类型

第二章 变量与数据类型变量变量的概述变量是指内存中的一个存储区域,该区域要有自己的名称(变量名)、类型(数据类型),该区域的数据可以在同一数据类型的范围内不断变化值。每个变量都有自己的作用范围,叫作用域变量的注意事项1.Java中的变量必…

python实现推荐系统代码_推荐系统之矩阵分解及其Python代码实现

有如下R(5,4)的打分矩阵:(“-”表示用户没有打分)其中打分矩阵R(n,m)是n行和m列,n表示user个数,m行表示item个数那么,如何根据目前的矩阵R(5,4)如何对未打分的商品进行评分的预测(如何得到分值为0的用户的打分值)?——…

数据库分区分表以及读写分离

谈谈怎么实现Oracle数据库分区表 Oracle数据库分区是作为Oracle数据库性能优化的一种重要的手段和方法,做手头的项目以前,只聆听过分区的大名,感觉特神秘,看见某某高手在讨论会上夸夸其谈时,真是骂自己学艺不精&#x…

java第二章_JAVA第二章知识点

JAVA第二章知识点本章知识梳理2.1 关键字2.2 标识符2.3 变 量2.4运算符2.5 程序流程控制2.6 方法2.1 关键字关键字(keyword)的定义和特点定义:被java语言赋予了特殊含义,用做专门用途的字符串(单词)特点:关键字中所有字母都为小写保留字(rese…

JSP Workshop

http://www.cnblogs.com/ITtangtang/p/4126395.html 发现http://www.tutorialspoint.com/里的资料很全也很不错啊! 资料:http://www.tutorialspoint.com/jsp/jsp_tutorial.pdf 另外,http://www.runoob.com/jsp/jsp-tutorial.html 中关于JSP…

崇天老师python123测验6_嵩天老师python123测验1: Python基本语法元素 (第1周)

选择题**Guido van Rossum正式对外发布Python版本的年份是:‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪…

从链接中获取文件名及扩展名

exeStr [filePath lastPathCompoment];   从链接中读取完整的带后缀文件名称 exeStr [filePath stringByDeleteExtension]; 从链接中读取不带后缀名的文件名称 fileType [filePath pathExtension];       获得链接中文件扩展名,不带"." …