为了账号安全,请及时绑定邮箱和手机立即绑定

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

//将函数作为一种数据类型
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 回答

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信