当前位置: 首页 > 面试题库 >

成员运算符'%'必须至少具有一个'ViewController'类型的参数

韦棋
2023-03-14
问题内容

我正在尝试使用自定义函数创建一个简单的Swift
3模板,以使用Xcode应用程序中的postfix一元运算符来计算百分比。这似乎是一个重复的问题,因为我之前的帖子中接受的答案已经显示了如何在Playground中执行此操作。但是自那以后,我发现自定义函数在Xcode项目中的工作方式不同。

下面 的模板 ,我声明了’operator' at file scope(或至少我相信我这样做了)。但是,在声明后缀函数时,Xcode建议

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

并提供插入的修复程序static。随着static插入的Xcode然后建议

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

谁能解释为什么该%功能需要static在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)
    }
}

脚注

在接受的答案的基础上,现在可以从同一项目中的其他文件访问分组在单个文件中的自定义运算符功能。


问题答案:

我在文件范围内声明了“运算符”

不,你没有。您在定义范围内定义了它 UIViewController

postfix operator %

class ViewController: UIViewController {

    // ...

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

一个 可以 在夫特3定义操作符,如上所述类型的静态成员函数,但是只有当它们采取该类型的至少一个参数。

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

postfix operator %

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

class ViewController: UIViewController {

    // ...

}


 类似资料:
  • 在测试我的Controller类时,我遇到了这个异常 我的控制器测试类如下所示 我的引导类 我的依赖项如下所示 IllegalArgumentException:必须至少存在一个JPA元模型没有解决我的问题

  • 问题内容: 在开始使用spring rest时,我得到了如下错误 用下面的代码 以下是我的pom.xml UTF-8 UTF-8 1.8 请帮我。我不知道如何解决这个错误 问题答案: 你已添加 在你的pom.xml中。 Spring Boot会尝试自动为JPA创建实体工厂,但是你尚未定义有关JPA模型的任何内容。 尝试将其删除,以测试到目前为止你做了什么。

  • 从spring rest开始时,我得到以下错误: 带有以下代码 UTF-8 UTF-8 1.8 请帮帮我.我不知道如何解决这个错误

  • 我的父母POM是: 我还添加了JPA: 注意:当我降级到2.0.1时,它可以工作。这是2.0.2中的bug吗??

  • 问题内容: 我有一个连接到数据库的应用程序,如果名称不存在该表,则创建一个表,并添加新的注册用户信息,以便我可以将密码散列到我的登录框中,并将其与数据库匹配,也将被散列。目前,我有以下错误代码。 此代码段 在主班 问题答案: 您尚未指定任何列,这正是错误消息告诉您的内容。正确的语法是

  • 我试图在JUnit 5中开发一个参数化测试,如下例所示。 尝试运行测试导致异常: 您必须为此@ParameterizedTest提供至少一个参数 这个信息让我觉得,我做错了什么,不是吗? p、 我有一个假设,只有原语类型的参数可用。