定义一个函数类型的变量,并赋值为函数。系统就报错
//将函数作为一种数据类型 func changeScore(inout scores:Array<Int>,operater op:(inout Array<Int>)->()){ op(&scores); } func allAddScore(inout scores:Array<Int>)->(){ for i in 0..<scores.count{ scores[i] += 5; } } func allTransfer(inout scores:Array<Int>){ for i in 0..<scores.count{ scores[i]=Int(Double(scores[i])/150.0*100.0); } } func allSqrt(inout scores:Array<Int>){ for i in 0..<scores.count{ scores[i]=Int(sqrt(Double(scores[i]))*10.0); } } var scores:[Int]=[60,30,55,90,100,78,94]; allAddScore(&scores); scores; scores=[150,120,100,90,72]; allTransfer(&scores); scores; scores=[100,60,50,36,80,75,65]; allSqrt(&scores); scores;
目前代码运行到这里,单独调用每个函数都没问题。结果都是对的。
scores=[1,2,3,4,5,6]; //var myDelegate = allAddScore; //changeScore(&scores, operater: myDelegate); changeScore(&scores, operater: allAddScore); scores;
代码运行到这里,如果我在调用changeScore这个函数时直接传入的是allAddScore这个函数名,那么运行结果也没有问题。
但是,如果我单独定义一个变量myDelegate将其赋值为函数名allAddScore,这时候编译器不会出现红色感叹号,表示代码是没有问题的。但是XCode就报错了。错误说明是com.apple.dt.xcode.Playground这个service create a crash log.然后编辑区的右边就没有任何结果了。
各位大神,帮忙看看这个是什么原因?!