励志作为iOS的开发人员,尽管写代码的时候不会专门的挑选Swift语言,但是肯定都会熟悉Swift这个名字,楼主表示从刚开始学习objc的时候就对Swift这个名字很感兴趣,感觉很高大上,但是从很多博客上也相应的看到相关文章,不得不说,Swift必将成为以后iOS开发的主流,尽管每次更新,Swift语言都会有比较大的更新,但不能代表就不了解他,闲话不多说,想了解Swift的历史可以去百度,今天聊聊关于Swift的那点小基础,这里如果有一点点C++/Java/PHP的基础的话,类比了解起来会更容易,毕竟Swift是集合了许许多多的语言的优点。
var stringBo:String = "RunIntoLove";//后面的引号可以不加,Swift允许,但是楼主比较习惯了
let string1Bo:String = "Run";
//进行修改值
stringBo = "Yue";
string1Bo = "Yue";//会出现报错-Cannot assign to value:'stringBo' is a 'let' constant ,就是说不能改变他的值,因为他是一个let类型的变量
var stringBo = "RunIntoLove";//Swift会自动的根据后面的类型,判断stringBo的类型,所以可以不写类型
var string1Bo:String; //这样子是定义了一个字符串String类型的变量
var int1Bo:Int = 10;//这样子是定义了一个整型Int类型的变量
var string2Bo;//这里会报错,如果不直接赋值,那么后面的类型是不可以忽略的,会报错-Type annotation missing in pattern 类型描述缺少类型
//数字
var u:Int = 00010_000_000;//var u = 10000000 || var u = 10_000_000.0 这三种写法是一样的
var d:Double = 10.2;
var o = Double(u) + d;//在Swift中,不同类型的属性不能进行运算,要想进行运算,必须强制转换成相同的类型,这个时候o的值就是10000010.2
var firstName:String = "RunInto"
var lastName:String = "Love"
//字符串的连接
var name:String = firstName + lastName
//定义元组
var postion = (name:"YueWen",age:22);//定义一个元组,这种定义法类似一个结构体
var person:(String,Int) = ("YueWen",22);//可以提前声明类型
var (z,m) = ("yuewen",18);//通过元组给其他元组赋值
var point2 = (name:z,age:m);
//取值
var name_1 = postion.name//与name_1 = postion.0等价
var age_1 = postion.age//与age_1 = postion.1等价
var name_2 = person.0//通过小标进行取值,类似与数组了
var age_2 = person.1
NSInteger i = 1;
if(i)//如果i为真,报错-Type'Int' does not conform to protocol 'BooleanType'
{
//coding..
}
var number:Int = 1;
if(numbe1 == 1)//如果number = 1
{
//coding...
}
//定义一个数组
var numberArr = [90,85,47,52,36,"123"]//这里数组比较特别,里面的数据不仅限于一种类型,比如这里的数组存的就是Int类型的数据以及String类型的数据
//循环遍历
for s in numberArr
{
print("number = \(s)")//在iOS_9.0之后,print替换了println,println已经被废除,写的话会报错
}
//普通for循环
for (var i = 0; i < numberArr.count; i++)//Swift中调用方法废除了[],选用了. 这点与大多数的编程语言相同了
{
var s = numberArr[i]
print("打印出的变量为\(s)")//print 代替 println,打印的形式只需要加一个\(需要打印的内容)即可
}
//do while循环
var k = 0
repeat//iOS9.0之后用repeat代替了do
{
var s = numberArr[k]
print("do while 循环打印出的变量是\(s)")
k++
}while(k < numberArr.count)
//while循环
var k1 = 0;
while(k1 < numberArr.count)
{
print("while 循环打印出的变量是\(numberArr[k1])");
k1++ ;
}
//switch
let iso = "iOS"
switch iso//switch后面的变量可以使字符串,不仅仅只限于数字了
{
case "iso":
print("iso 为 iOS")
//break 可以省略,swift不穿透
//穿透需要加 fall through,加上这一句就是说执行完这句话之后会继续执行case:"Android"
case "Android":
print("iso 为 Android")
case "JS":
print("iso 为 JS");
default:
print("最后了")
}
func testFunction()
{
print("测试方法!")
}
//带参的函数
func testFunction(s:String)
{
print("参数是\(s)")
}
func testFunction0(inout s:String)//表示实参可以改变,改变之后参数也会发生变化,类似C++的引用
{
s = "Run";
print("参数是\(s)")
}
var s:String = "RunIntoLove";
testFunction0(&s);//在执行完毕这一句话之后,s就变成了Run
//带多个参数的函数
func testFunction(s:String , i:Int)
{
print("我的参数是\(s),\(i)")
}
testFunction("RunIntoLove", i: 5)
//返回值函数
func testFunctionF(v1:String, andVaule v2:Int, andNumber v3:Int) ->String//逗号不要丢
{
return "\(v1)\(v2)\(v3)"
}
var string = testFunctionF("RunIntoLove", andVaule: 10, andNumber: 8)
print("返回值参数是:\(string)");//返回值参数是:RunIntoLove108
//无参 返回3个值,但是需要用一个元组接收
func testFunction123() ->(String ,String ,String)
{
return ("RunIntoLove","Study","Swift")
}
//用元组接收
var (name1,action,target) = testFunction123()
print("\(name1) \(action) \(target)");//RunIntoLove Study Swift
//函数嵌套函数
func testFunctionInFounction() -> Int//返回值类型为Int
{
var y134:Int = 100
//方法可以嵌套方法
func add()
{
y134 += 5 //可以用外部的变量
y134++ //变量与++之间不能有空格,不然编译器会报错
}
//执行方法
add()
return y134
}
var number12 = testFunctionInFounction()
print("number12 = \(number12)")//number12 = 106
var arrInt = [80,12,45,789,85,63,110] //定义一个数组
func hasClosureMatch(arr:[Int],value:Int,function:(num:Int, value:Int)-> Bool) ->Bool//参数的方法参数有两个,一个数字,一个参考数字,返回值为bool, 外部大的方法的参数为 一个Int型的数组,参考值,以及一个闭包
{
//开始遍历数组
for item in arr
{
//使用参数中的函数
if(function(num:item, value:value))
{
return true
}
}
return false
}
//定义个方法,查找arr里面是否有比100大的数
var v1 = hasClosureMatch(arrInt,value:100,function:
{
(num:Int,value:Int) -> Bool in
return num >= value //当该数字num大于参考值value的时候返回sure,否则返回false
})//打印结果为ture,因为110大于100