2016-10-22 77 views
0

声明我得到一个错误,指出:静态方法可能只对一类

静态方法可能只对一类

我怎样才能解决这个声明?

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) 
+0

不是静态方法的另一个类型方法的名称?所以“类型方法只能在类型上声明”似乎是有道理的。你有什么问题? –

+0

我在这里有点新手。你能否详细说明一下。 @SteveIves – Illep

+0

如果您希望'random(min:max:)'是'CGFloat'上的类型方法,那么您需要使用'CGFloat'扩展名来定义它。 – Hamish

回答

10

我在稍显混乱的地方得到这个错误信息的原因是,我在班上早期缺少右括号。

对于编译器来说,声明似乎是在另一个方法中。出于这个原因,错误信息出现在一个看起来很好的地方。错误消息它本身就是点。

这是第一次谷歌搜索,所以我在这里添加我的经验,希望它可以帮助其他人做出类似的混乱。

+0

这救了我:) – lwdthe1

0

我得到了同样的错误,由于额外的右括号在前者class

enter image description here

0

很多答案似乎周围的错别字和悬空或过早关闭额外的范围将被解决。然而,仅仅为的情况下,如果一些人会遇到这个问题,而故意在全球范围内声明功能为static,澄清需要进行:

在全球范围内的所有功能,在可执行静态链接/图书馆,这就是为什么他们可以从全球范围内,从任何范围,首先。然而,在面向对象的语言中,Swift毫无疑问是类的实例的分配在设计上是允许的(并且是预期的)是动态的,因此实例最终将被分配的实际内存地址提前未知。所以这就是我们所做的 - 我们将函数声明为静态的,以便明确地告诉编译器,尽管此函数属于此类,但它不需要绑定到特定的类实例,而是类本身,从而允许从任何地方。在这方面,我们可以说全球范围内的所有功能都是隐式静态的。