swift和java_Swift和Java在枚举方面的比较

1. 在Swift和Java关于枚举方面,两个语言语法相似。

Swift定义枚举:

enumCompassPoint{caseMercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune

}

Java定义枚举:

public enumColorSelect {

red, green, yellow, blue;

}

2. 枚举和switch结合使用

Swift代码如下:

enumCompassPoint{caseMercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune

}

let directionToHead=CompassPoint.VenusswitchdirectionToHead {caseCompassPoint.Earth :

print("this is \(directionToHead)")caseCompassPoint.Venus :

print("this is \(directionToHead)")caseCompassPoint.Mercury :

print("this is \(directionToHead)")caseCompassPoint.Jupiter :

print("this is \(directionToHead)")

}

2.1 switch的 case 分支代码中提取每个相关值作为一个常量(用let前缀)或者作为一个变量(用var前缀)来使用:代码如下:

enumBarcode {caseUPCA(Int, Int, Int)caseQRCode(String)

}

var productBarcode= Barcode.UPCA(8, 85909_51226, 3)

productBarcode= .QRCode("ABCDEFGHIJKLMNOP")switchproductBarcode {caselet .UPCA(numberSystem, identifier, check):

print("UPC-A with value of \(numberSystem), \(identifier), \(check).")caselet .QRCode(productCode):

print("QR code with value of \(productCode).")

}//输出 "QR code with value of ABCDEFGHIJKLMNOP."

2.2 原始值(Raw Values):枚举成员可以被默认值(称为原始值)预先填充,其中这些原始值具有相同的类型。

enumASCIIControlCharacter: Character {case Tab = "\t"

case LineFeed = "\n"

case CarriageReturn = "\r"}

原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。

enumPlanet: Int {case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune

}

使用枚举成员的rawValue属性可以访问该枚举成员的原始值,通过参数为rawValue构造函数创建特定原始值的枚举。代码如下:

let earthsOrder =Planet.Earth.rawValue//earthsOrder is 3

let possiblePlanet = Planet(rawValue: 7)//possiblePlanet is of type Planet? and equals Planet.Uranus

然而,并非所有可能的Int值都可以找到一个匹配的行星。正因为如此,构造函数可以返回一个可选的枚举成员。在上面的例子中,possiblePlanet是Planet?类型,或“可选的Planet”。

如果你试图寻找一个位置为9的行星,通过参数为rawValue构造函数返回的可选Planet值将是nil:

enumPlanet: Int {case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune

}

let positionToFind= 9

if let somePlanet =Planet(rawValue: positionToFind) {switchsomePlanet {case.Earth:

print("Mostly harmless")default:

print("Not a safe place for humans")

}

}else{

print("There isn't a planet at position \(positionToFind)")

}

这个范例使用可选绑定(optional binding),通过原始值9试图访问一个行星。if let somePlanet = Planet(rawValue: 9)语句获得一个可选Planet,如果可选Planet可以被获得,把somePlanet设置成该可选Planet的内容。在这个范例中,无法检索到位置为9的行星,所以else分支被执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值