尝试在返回`CGFloat’的函数中进行算术运算,出现错误:
找不到接受提供的参数的’/’的重载
func kDCControlDegreesToRadians(x : CGFloat) -> CGFloat
{
return (M_PI * (x) / 180.0) // error is here.
}
其他人看到过这种类型的问题吗?
这是一个问题double
,以float
转换。
在64位计算机上,CGFloat
定义为double
并且您将编译它而不会出现问题,因为M_PI
和x
都是双精度。
在32位计算机上,CGFloat
是,float
但M_PI
仍然是两倍。不幸的是,Swift中没有隐式强制转换,因此您必须显式强制转换:
return (CGFloat(M_PI) * (x) / 180.0)
180.0
文字的类型被推断。
在Swift 3中
M_PI
已弃用,请CGFloat.pi
改用:
return (x * .pi / 180.0)
问题内容: 我只是注意到Swift的成员是隐式的。 例如,这只会调用一次: 这背后的原理是什么? 如果我想要相反的行为怎么办? 问题答案: 该属性定义了一个“类型属性”,该属性仅被实例化一次。正如您所注意到的,这是懒惰发生的,因为静态行为就像全局变量一样。正如Swift编程语言:属性所说: 全局常量和变量总是以与惰性存储属性类似的方式延迟计算。与惰性存储的属性不同,全局常量和变量不需要用修饰符标记
问题内容: 如果能解决问题,请使用原始的Objective-C代码。 我从这段代码开始。第2行和第3行很好,稍后我将对其进行介绍。 在Xcode 6 beta 3中,必须将arc4random_uniform UInt32结果强制转换为CGFloat,以便减号和乘法起作用。这不再起作用,并且编译器显示错误: “ CGFloat”不可转换为“ UInt8” 发行说明指出: “ CGFloat现在是一
以下代码在C++11中编译成功: 它包括用于现代C++的JSON。一个工作示例在这个Wandbox中。 JSON变量被隐式转换为字符串。但是,如果我取消最后一行的注释,这是一个显式转换,它将无法编译。这里的编译结果。 除了这个json库的特殊细微差别之外,如何编写一个类,使隐式转换工作,而显式转换不工作? 是否有某种构造函数限定符允许这种行为?
一、隐式转换 1.1 使用隐式转换 隐式转换指的是以 implicit 关键字声明带有单个参数的转换函数,它将值从一种类型转换为另一种类型,以便使用之前类型所没有的功能。示例如下: // 普通人 class Person(val name: String) // 雷神 class Thor(val name: String) { // 正常情况下只有雷神才能举起雷神之锤 def hamm
问题内容: “隐式转换”和“显式转换”有什么区别?Java和C ++的区别是否不同? 问题答案: 显式转换是您使用某种语法 告诉 程序进行转换的地方。例如(在Java中): 隐式转换是在没有任何语法的情况下进行转换的地方。例如(在Java中): 应该注意的是(在Java中)涉及原始类型的转换通常涉及某种表示形式的更改,并且可能导致精度降低或信息丢失。相比之下,仅涉及引用类型的转换不会更改基本表示形