声明我得到一个错误,指出:静态方法可能只对一类
静态方法可能只对一类
我怎样才能解决这个声明?
public static func random(min min: CGFloat, max: CGFloat) -> CGFloat {
return CGFloat.random() * (max - min) + min
}
这就是我从SWIFT类调用上述方法的方法。
var ran = CGFloat.random(min:-255, max:588)
声明我得到一个错误,指出:静态方法可能只对一类
静态方法可能只对一类
我怎样才能解决这个声明?
public static func random(min min: CGFloat, max: CGFloat) -> CGFloat {
return CGFloat.random() * (max - min) + min
}
这就是我从SWIFT类调用上述方法的方法。
var ran = CGFloat.random(min:-255, max:588)
我在稍显混乱的地方得到这个错误信息的原因是,我在班上早期缺少右括号。
对于编译器来说,声明似乎是在另一个方法中。出于这个原因,错误信息出现在一个看起来很好的地方。错误消息它本身就是点。
这是第一次谷歌搜索,所以我在这里添加我的经验,希望它可以帮助其他人做出类似的混乱。
这救了我:) – lwdthe1
很多答案似乎周围的错别字和悬空或过早关闭额外的范围将被解决。然而,仅仅为的情况下,如果一些人会遇到这个问题,而故意在全球范围内声明功能为static
,澄清需要进行:
在全球范围内的所有功能,在可执行静态链接/图书馆,这就是为什么他们可以从全球范围内,从任何范围,首先。然而,在面向对象的语言中,Swift毫无疑问是类的实例的分配在设计上是允许的(并且是预期的)是动态的,因此实例最终将被分配的实际内存地址提前未知。所以这就是我们所做的 - 我们将函数声明为静态的,以便明确地告诉编译器,尽管此函数属于此类,但它不需要绑定到特定的类实例,而是类本身,从而允许从任何地方。在这方面,我们可以说全球范围内的所有功能都是隐式静态的。
不是静态方法的另一个类型方法的名称?所以“类型方法只能在类型上声明”似乎是有道理的。你有什么问题? –
我在这里有点新手。你能否详细说明一下。 @SteveIves – Illep
如果您希望'random(min:max:)'是'CGFloat'上的类型方法,那么您需要使用'CGFloat'扩展名来定义它。 – Hamish