radiansToVector 和 randomInRange Objective-C 函数的 Swift 替代方案是啥? [关闭]
Posted
技术标签:
【中文标题】radiansToVector 和 randomInRange Objective-C 函数的 Swift 替代方案是啥? [关闭]【英文标题】:What is the Swift alternative of radiansToVector and randomInRange Objective-C functions? [closed]radiansToVector 和 randomInRange Objective-C 函数的 Swift 替代方案是什么? [关闭] 【发布时间】:2015-08-04 13:28:40 【问题描述】:我观看了一个旧的 ios 7 spritekit 课程,他们使用这些方法。我尝试在 Swift 中使用它们,但它们不起作用。我应该改用什么?
static inline CGVector radiansToVector(CGFloat radians)
CGVector vector;
vector.dx = cosf(radians);
vector.dy = sinf(radians);
return vector;
static inline CGFloat randomInRange(CGFloat low, CGFloat high)
CGFloat value = arc4random_uniform(UINT32_MAX) / (CGFloat)UINT32_MAX;
return value * (high - low) + low;
【问题讨论】:
当然不行,Objective-C(实际上那个代码是“纯”C)和Swift是两种不同的编程语言。您是否尝试翻译代码?你有什么问题,你卡在哪里了? 我知道我的意思是我试图修改代码以适应 swift 但我没有很好地修改它感谢您的通过 【参考方案1】:Swift 重写:
func randomInRange(low: CGFloat, high: CGFloat) -> CGFloat
let value = CGFloat(arc4random_uniform(UINT32_MAX)) / CGFloat(UINT32_MAX)
return value * (high - low) + low
func radiansToVector(radians: CGFloat) -> CGVector
return CGVector(dx: cos(radians), dy: sin(radians))
更新:后者更快捷(感谢@Jessy 指出):
extension CGVector
init(radians: CGFloat)
self.dx = cos(radians)
self.dy = sin(radians)
【讨论】:
"radiansToVector" 并不是真正的 Swift 风格。应该是 CGVector 的初始化器。 @Jessy 因为 CoreGraphics 是基于 C 的框架,Convenience initializer not allowed in non-class type 'CGVector'
你好 rshev 我有一些代码有问题我可以直接给你发邮件吗?
@AdeebAbaza 请在 *** 上发帖,以便其他人也可以帮助您。
@Jessy 谢谢,添加了一个例子。以上是关于radiansToVector 和 randomInRange Objective-C 函数的 Swift 替代方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章