Swift中的公共扩展:Float vs Float.type
问题描述:
我试图在Swift中为Swift构建一个扩展,它返回一个枚举(case .Positive为正数,负数为.Negative)。我首先建立了一个枚举。现在Swift中的公共扩展:Float vs Float.type
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'应该保持为浮动状态。
答
由于您使用static
:
public static func sign()-> Sign { ... }
self
这个功能是指类型(Float
结构),而不是实例(浮点数)。删除static
,你会没事的。
答
第一件事你使用静态作为@codedifferent已经解释,第二如果已经有一个属性isMinus
那么为什么要使用自己的逻辑?
只需使用这个方法可以减少代码的行数:
public extension Float {
public func sign()-> Sign {
return self.isSignMinus ? Sign.Negative : Sign.Positive
}
}
哦。神。我有时候是个白痴。我完全错过了。谢谢! –
别担心。每个人都有不自豪的时刻。 –
@RobinThuranMalhotra如果这回答你的问题,请接受它 – Alexander