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 替代方案是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

java中经常出现的exception

python array的应用

python生成双色球程序

如何找到其乘积可以表示为 2 个随机整数的平方差的连续子序列/子数组的数量?

& 和 && 区别和联系,| 和 || 区别和联系

第三十一节:扫盲并发和并行同步和异步进程和线程阻塞和非阻塞响应和吞吐等