定义一个函数类型的变量,并赋值为函数。系统就报错

来源:7-7 Swift-函数类型

小王子抓猫咪

2016-06-06 02:05

//将函数作为一种数据类型
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.然后编辑区的右边就没有任何结果了。

各位大神,帮忙看看这个是什么原因?!

写回答 关注

1回答

  • ftfly
    2016-07-14 21:38:44

    这个代码在我这里一切正常,没发现有错误

玩儿转Swift

这套教程比任何的Swift中文教程深入,并且演示示例更丰富

57181 学习 · 511 问题

查看课程

相似问题