Swift中是否有限制在0到1范围内的浮点类型?

Swift中是否有限制在0到1范围内的浮点类型?,swift,Swift,我正在为UIColor编写一些方便的扩展。 其中一个初始化器需要0到1之间的浮动来设置透明度。 我正在寻找一种类似于UInt8但在浮点数范围内的类型。UInt8是一个限制在0-255范围内的整数。是否存在表示范围0到1的任何无符号浮点值的本机类型?否,在Swift中没有一个浮点值限制为[0-1]的类型。但是您可以实现这样的行为。您无法限制此范围。我建议断言以下参数: let allowedRange = 0.0...1.0 precondition(allowedRange.contains(r

我正在为
UIColor
编写一些方便的扩展。 其中一个初始化器需要0到1之间的浮动来设置透明度。
我正在寻找一种类似于
UInt8
但在浮点数范围内的类型。
UInt8
是一个限制在0-255范围内的整数。是否存在表示范围0到1的任何无符号浮点值的本机类型?

否,在Swift中没有一个浮点值限制为[0-1]的类型。但是您可以实现这样的行为。

您无法限制此范围。我建议断言以下参数:

let allowedRange = 0.0...1.0
precondition(allowedRange.contains(red))
表示不允许该错误输入。或者抛出一个可以从其他位置恢复的错误:

let allowedRange = 0.0...1.0
guard allowedRange.contains(red) else {
    throw NSError(domain: "YourDomain", code: 0, userInfo: [:])
}

为此,只需使用
UInt8
并制作一个方便的初始值设定项,除以255,将潜在的透明度值从1600万左右降低到我甚至不知道有多少,但问题是它会将透明度置于一个感觉不自然的刻度上。是的,但你可能要处理24位颜色,因此,这种近似迟早会发生。如果你正在研究这个问题,或者跟随快速进化的可能实现(之前已经讨论过),你所描述的被称为依赖类型。我不知道有哪种广泛使用的语言具有此功能,并且很难以通用方式实现。(显然,“类型的分数”这一特例可以附加到语言上,但我不知道有哪种通用语言也有这种情况。)@AMomchilov这里的问题不是近似。“0.5”是比128更自然的表达“一半”的方式。还是127?还是16000什么的?或这绝对是一个有用的特性,我只是不知道有哪种通用语言提供它。