尝试按照Apple文档(和教程化的)创建Launch Helper时,我似乎遇到了麻烦,原因是将Objective-
C代码移植到Swift中…在此方面,谁的编译器再也不过分了案件。
import ServiceManagement
let launchDaemon: CFStringRef = "com.example.ApplicationLauncher"
if SMLoginItemSetEnabled(launchDaemon, true) // Error appears here
{
// ...
}
该错误似乎始终是:
Type 'Boolean' does not conform to protocol 'BooleanType'
我尝试过Bool
在多个位置进行转换,以防万一我只是在处理一个多余的,古老的原语(由Obj-
C或Core Foundation引入)而无济于事。
为了以防万一,我尝试投射响应:
SMLoginItemSetEnabled(launchDaemon, true) as Bool
产生错误:
'Boolean' is not convertible to 'Bool'
…严重吗?
Boolean
是“历史Mac类型”,并声明为
typealias Boolean = UInt8
所以这样编译:
if SMLoginItemSetEnabled(launchDaemon, Boolean(1)) != 0 { ... }
使用以下Boolean
类型的扩展方法(并且我不确定是否以前已经发布过此方法,现在无法找到它):
extension Boolean : BooleanLiteralConvertible {
public init(booleanLiteral value: Bool) {
self = value ? 1 : 0
}
}
extension Boolean : BooleanType {
public var boolValue : Bool {
return self != 0
}
}
你可以写
if SMLoginItemSetEnabled(launchDaemon, true) { ... }
BooleanLiteralConvertible
扩展名允许第二个参数自动转换true
为Boolean
。BooleanType
扩展允许将Boolean
函数的返回值自动转换Bool
为if语句。更新: 从 Swift 2 / Xcode 7 beta 5开始, “ historic Mac type” Boolean
被映射为Swift Bool
,使得上述扩展方法已过时。
Dart为布尔数据类型提供内置支持,Dart中的布尔数据类型仅支持两个值 - 和。关键字用于表示Dart中的布尔文字。 在Dart中声明布尔变量的语法,如下所示 - 示例1 执行上面示例代码,得到以下结果 - 示例2 与JavaScript不同,布尔数据类型仅将文字识别为。任何其他值都被视为。考虑以下示例 - 如果在JavaScript中运行,上面的代码段将打印消息 - ,因为如果字符串不为空,结
Python 提供了 bool 类型来表示真(对)或假(错),比如常见的 比较算式,这个是正确的,在程序世界里称之为真(对),Python 使用 True 来代表;再比如 比较算式,这个是错误的,在程序世界里称之为假(错),Python 使用 False 来代表。 True 和 False 是 Python 中的关键字,当作为 Python 代码输入时,一定要注意字母的大小写,否则解释器会报错。
在C语言中,关系运算和逻辑运算的结果有两种,真和假:0 表示假,非 0 表示真。例如: 运行结果: 10 20↙ flag = 0 C语言并没有彻底从语法上支持“真”和“假”,只是用 0 和非 0 来代表。这点在 C++ 中得到了改善,C++ 新增了 bool 类型(布尔类型),它一般占用 1 个字节长度。bool 类型只有两个取值,true 和 false:true 表示“真”,false 表示
2.4 布尔类型 bool 布尔是 19 世纪英国数学家,他建立了命题代数,简单说就是将逻辑推理变成了代数计 算。所谓命题就是可以判断真假的语句,因此在编程语言中,将真、假两个值构成了一个类 型,即布尔类型,真和假也称为布尔值。以真或假为值的表达式称为布尔表达式,它在程序 设计中的作用是描述某种条件,以支持“如果某条件满足,则执行某语句”之类的处理过程。 第 3 章将学习的条件和循环语句中都会用到
一个布尔类型的值只有两种:true 或 false。if 和 for 语句的条件部分都是布尔类型的值,并且 和 等比较操作也会产生布尔型的值。 一元操作符 对应逻辑非操作,因此 的值为 false,更复杂一些的写法是 ,实际开发中我们应尽量采用比较简洁的布尔表达式,就像用 x 来表示 。 Go语言对于值之间的比较有非常严格的限制,只有两个相同类型的值才可以进行比较,如果值的类型是接口(interf
3.4. 布尔型 一个布尔类型的值只有两种:true和false。if和for语句的条件部分都是布尔类型的值,并且==和<等比较操作也会产生布尔型的值。一元操作符!对应逻辑非操作,因此!true的值为false,更罗嗦的说法是(!true==false)==true,虽然表达方式不一样,不过我们一般会采用简洁的布尔表达式,就像用x来表示x==true。 布尔值可以和&&(AND)和||(OR)操作