加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – 成员运算符’%’必须至少有一个类型为’ViewController

发布时间:2020-12-15 01:43:39 所属栏目:百科 来源:网络整理
导读:我正在尝试创建一个简单的Swift 3模板,其中包含一个自定义函数,用于在Xcode应用程序中使用postfix一元运算符来计算百分比.这似乎是一个重复的问题,因为我之前的帖子中的 accepted answer已经显示了如何在Playground中执行此操作.但我发现自定义函数在Xcode项
我正在尝试创建一个简单的Swift 3模板,其中包含一个自定义函数,用于在Xcode应用程序中使用postfix一元运算符来计算百分比.这似乎是一个重复的问题,因为我之前的帖子中的 accepted answer已经显示了如何在Playground中执行此操作.但我发现自定义函数在Xcode项目中的工作方式不同.

在下面的模板中,我在文件范围内声明了“运算符”(或者至少我相信我做过).但是当声明后缀函数时,Xcode建议这样做

Operator '%' declared in type 'ViewController' must be 'static'

并提供一个修复 – 它插入静态.随着静态插入Xcode然后建议

Member operator '%' must have at least one argument of type 'ViewController’.

任何人都可以解释为什么%函数需要在Xcode项目中是静态的,以及最后一条错误消息在同一行的上下文中意味着什么(见下文)?谢谢

草稿模板

import UIKit

postfix operator %

class ViewController: UIViewController {

var percentage = Double()

override func viewDidLoad() {
    super.viewDidLoad()

    percentage = 25%
    print(percentage)
    }

static postfix func % (percentage: Int) -> Double {
    return (Double(percentage) / 100)
    }
}

编辑模板

这是基于接受的答案的工作模板.我没有理解在文件范围内声明操作符的含义.

import UIKit


postfix operator %

postfix func % (percentage: Int) -> Double {
return (Double(percentage) / 100)
}


class ViewController: UIViewController {

var percentage = Double()

override func viewDidLoad() {
    super.viewDidLoad()

    percentage = 25%
    print(percentage)
    }
}

脚注

基于已接受的答案,现在可以从同一项目中的其他文件访问分组在单个文件中的自定义运算符功能.欲了解更多信息,请访问here.

解决方法

I declared the ’operator’ at file scope

不,你没有.你在它的范围内定义了它
UIViewController定义:

postfix operator %

class ViewController: UIViewController {

    // ...

    static postfix func % (percentage: Int) -> Double {
        return (Double(percentage) / 100)
    }
}

可以将运算符定义为Swift 3中类型的静态成员函数,
但只有当他们至少采用这种类型的一个论点时.

将声明移动到文件范围以解决问题:

postfix operator %

postfix func % (percentage: Int) -> Double {
    return (Double(percentage) / 100)
}

class ViewController: UIViewController {

    // ...

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读