Swift中的公共扩展:Float与Float.type

Swift中的公共扩展:Float与Float.type,swift,swift2,swift-extensions,Swift,Swift2,Swift Extensions,我正在尝试为Swift中的float构建一个扩展,该扩展返回一个枚举大小写。正代表正,。负代表负。我首先构建了一个枚举 public enum Sign { case Positive,Negative } 现在,对于扩展 public extension Float { public static func sign()-> Sign { if self < Float(0) { return Si

我正在尝试为Swift中的float构建一个扩展,该扩展返回一个枚举大小写。正代表正,。负代表负。我首先构建了一个枚举

public enum Sign 
{
    case Positive,Negative
}
现在,对于扩展

public extension Float
{
    public static func sign()-> Sign
    {
        if self < Float(0)
        {
            return Sign.Negative
        }
        else
        {
            return Sign.Positive
        }
    }
}
我要走了

无法将“Float.type”类型的值转换为预期的参数类型

排队

 if self < Float(0)
但考虑到Float扩展中的“self”应该保持为Float,这种情况不应该发生。

因为您使用的是static:

此函数中的self指的是Float结构的类型,而不是浮点数的实例。移除静电,您就会没事。

因为您使用的是静电:


此函数中的self指的是Float结构的类型,而不是浮点数的实例。删除static,您就没事了。

首先,您将它与static一起使用,因为@codedifferent已经解释过了,第二,如果已经有一个属性isMinus,那么为什么要使用您自己的逻辑

只需使用此选项即可减少代码行数:

public extension Float  {
 public  func sign()-> Sign {
  return  self.isSignMinus ? Sign.Negative : Sign.Positive

 }
}

首先,您使用它作为@codedifferent的静态属性已经解释过了,第二,如果已经有一个属性isMinus,那么为什么要使用您自己的逻辑呢

只需使用此选项即可减少代码行数:

public extension Float  {
 public  func sign()-> Sign {
  return  self.isSignMinus ? Sign.Negative : Sign.Positive

 }
}

哦上帝我有时是个白痴。我完全错过了。谢谢别担心。每个人都有不值得骄傲的时刻。@RobinThuranMalhotra如果这回答了你的问题,请接受它。上帝我有时是个白痴。我完全错过了。谢谢别担心。每个人都有不值得骄傲的时刻。@RobinThuranMalhotra如果这回答了你的问题,请接受它,也许包括一个为什么使用静态它打破它的描述?很好的答案,我喜欢你指出的。这是一个超级简单的解决方案。谢谢可能包括一个为什么使用静态它打破它的描述?很好的答案,我喜欢你指出的。这是一个超级简单的解决方案。谢谢