枚举类型

python学习笔记(14)

﹥>﹥吖頭↗ 提交于 2019-11-26 20:45:21
枚举类 定义:在python中枚举是一种类(Enum,IntEnum),存放在enum模块中。枚举类型可以给一组标签赋予一组特定的值。 枚举的特点: (1)枚举类中不能存在相同的标签名。 (2)枚举是可以迭代的。 (3)不同的枚举标签可以对应相同的值,但它们都会被视为该值对应第一个标签的别名。 (4)如果要限制定义枚举时,不能定义相同值得成员。可以使用装饰器。 (5)枚举成员之间不能进行大小比较,可进行等值和同一性比较。 (6)枚举成员为单例,不可以实例化,不可更改。 用途 用大写变量通过整数定义,这样会导致类型为int型,并且依旧是变量。 我们可以直接使用 Enum 来定义一个枚举类。 常量: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum Month = Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) # 遍历枚举类型 for name, member in Month.__members__.items(): print(name,'---',member,'------',member.value) #直接引用一个常量 print('

Kotlin 五 泛型 枚举

戏子无情 提交于 2019-11-26 20:30:41
一 泛型 泛型,即 "参数化类型",将类型参数化,可以用在类,接口,方法上。 与 Java 一样,Kotlin 也提供泛型,为类型安全提供保证,消除类型强转的烦恼。 声明一个泛型类: class Box<T>(t: T) { var value = t }  创建类的实例时我们需要指定类型参数:  val box: Box<Int> = Box<Int>(1) // 或者 val box = Box(1) // 编译器会进行类型推断,1 类型 Int,所以编译器知道我们说的是 Box<Int>。  以下实例向泛型类 Box 传入整型数据和字符串 class Box<T>(t : T) { var value = t } fun main(args: Array<String>) { var boxInt = Box<Int>(10) var boxString = Box<String>("Runoob") println(boxInt.value) println(boxString.value) }   定义泛型类型变量,可以完整地写明类型参数,如果编译器可以自动推定类型参数,也可以省略类型参数。 Kotlin 泛型函数的声明与 Java 相同,类型参数要放在函数名的前面: un <T> boxIn(value: T) = Box(value) // 以下都是合法语句 val

Java枚举类型 enum

假如想象 提交于 2019-11-26 20:25:25
定义 An enum type is a special data type that enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it. 枚举类型是一种特殊数据类型,能够为一个变量定义一组预定义的常量。变量必须等于为其预定义的值之一。 枚举类型是Java 5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性。 枚举是特殊的类,可以拥有成员变量和方法。 使用 public enum Direction { //实例列表末尾的分号是可选的 NORTH, SOUTH, EAST, WEST } Direction类型的实例可以按静态变量的方式引用:Direction.NORTH,Direction.EAST 在开发中枚举可以用来定义常量 @Getterpublic enum TaskStatueEnum { NOTSTARTEND(1,"未开始"), EXECUTIONINPROGRESS(2,"执行中"), COMPLETED

Effective java中对于枚举的建议

我的未来我决定 提交于 2019-11-26 14:32:00
枚举和注解 1.用enum代替int常量 以前的int枚举类型(public static final int APPLE_FUJI = 0)不具有安全性,也没有描述性。Int枚举是编译时常量,很难将int枚举常量转换为可打印的字符串,还有一种变体就是String类型的(淘汰) 简单的枚举类型 Public enum Apple{FUJI,PIPPIN,GRANNY_SMITH} Java枚举本质上是int值 枚举类型是实例受控的,他们是单例(singleton)的泛型化,本质上是单元素的枚举 枚举类型保证了编译时的类型安全。 包含同名常量的多个枚举类型可以在一个系统中和平共处,因为命名空间不同。 枚举类型还允许添加任意的方法和域,并实现任意的接口。 为了将数据与枚举常量关联起来,得声明实例域,并编写一个带有数据并且将数据保存在域中的构造器。 枚举常量无法通过其构造器访问另一个构造器。 枚举中的switch语句适合于给外部的枚举类型增加特定于常量的行为。 使用枚举的场景 每当需要一组固定常量,并且在编译时就知道其成员的时候,就应该使用枚举。 枚举类型中的常量类型并不一定始终不变。 如果多个(但非所有)枚举常量同时共享相同的行为,则考虑策略枚举 2.用实例域代替序数 所有的枚举都有一个ordinal方法,它返回每一个枚举常量在类型中的数字位置。 永远不要根据枚举的序数导出与它关联的值

微服务中服务之间的交互模式

馋奶兔 提交于 2019-11-26 12:27:36
微服务各服务之间的交互定义契约、服务的生产者和调用者都需要遵守一些通用的设计模式,这样才能保证微服务不出问题。 1. 读者容错模式 读者容错模式(Tolerant Reader)指微服务化中服务提供者和消费者之间如何对接口的改变进行容错。从字面上来讲,消费者需要对提供者提供的功能进行兼容性设计,尤其对服务提供者返回的内容进行兼容,或者解决在服务提供者改变接口或者数据的格式的情况下,如何让服务消费者正常运行。 任何一个产品在设计时都无法预见将来可能增加的所有需求,服务的开发者通常通过迭代及时地增加新功能,或者让服务提供的API自然地演进。不过,服务提供者对外提供的接口的数据格式的改变、增加和删除,都会导致服务的消费者不能正常工作。 因此,在服务消费者处理服务提供者返回的消息的过程中,需要对服务返回的消息进行过滤,只提取自己需要的内容,对多余或者未知的内容采取抛弃的策略,而不是硬生生地抛错处理。 在实现过程中不推荐使用严格的校验策略,而是推荐使用宽松的校验策略,即使服务消费者拿到的消息报文发生了改变,程序也只需尽最大努力提取需要的数据,同时忽略不可识别的数据。只有在服务消费者完全不能识别接收到的消息,或者无法通过识别的信息继续处理流程时,才能抛出异常。 服务的消费者的容错模式忽略了新的消息项、可选的消息项、未知的数据值及服务消费者不需要的数据项。 笔者当前在某个支付公司工作

Prototype之详细解说[转]

江枫思渺然 提交于 2019-11-26 11:54:12
/* Prototype JavaScript framework, version 1.4.0 * (c) 2005 Sam Stephenson <sam@conio.net> * * Prototype is freely distributable under the terms of an MIT-style license. * For details, see the Prototype web site: http://prototype.conio.net/ * 这是一个JavaScript的框架,致力于简化动态的Web开发,完全按照面对对象的思想 * 进行Javascript开发,添加了迭代器的概念增强Javascript的设计能力。 * Prototype框架构思独特充满了技巧性的代码,方便易用的工具类! * /*-------------------------------------------------------------------------- */ /* 【Prototype】定义一个全局对象,提供一个全局的基本信息和工具 */ var Prototype = { Version: ' 1.4.0 ' , // 可以作为版本检测用 // 用于脚本检测的正则表达式,经常使用所以放在这里起到全局常量的作用 ScriptFragment: ' (?

TypeScript 枚举

≯℡__Kan透↙ 提交于 2019-11-26 10:04:25
  我们常常会有这样的场景,比如与后端开发约定订单的状态开始是0,未结账是1,运输中是2,运输完成是3,已收货是4。这样的纯数字会使得代码缺乏可读性。枚举就用于这样的场景。枚举可以让我们定义一些名字有意义的常量。使用枚举可以清晰地表达我们的意图。TypeScript支持基于数字枚举和字符串的枚举。 ⒈数字枚举   首先我们举例来看数字枚举 enum OrderStatus{ Start = 1, Unpaid, Shipping, Shipped, Complete, }   就像上面这样,我们通过数字来表达了订单状态。在实际的代码编写时,我们就直接使用OrderStatus.Start来代替原本的数字1,这就使得代码具备了相当的可读性,甚至可以免去冗余的注释。   在上面的代码中还使用了一个小技巧,当只写Start = 1时,后面的枚举变量就是递增的,当我们不在乎成员的值的时候,这种自增长的行为是很有用处的,但是要注意每个枚举成员的值都是不同的,但你也可以明确地写出每个枚举变量的数字,这取决于具体的业务场景。   当我们连第一个枚举变量的值都不写的时候,初始值将会为0,后面的枚举类型再依次递增。 enum OrderStatus{ Start, Unpaid, Shipping, Shipped, Complete, }   现在OrderStatus.Start的值为0

js中常见的几种对象遍历方式Object

喜欢而已 提交于 2019-11-26 09:28:58
一:自身可枚举属性 Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 。如果对象的键-值都不可枚举,那么将返回由键组成的数组。 这是合理的,因为大多数时候只需要关注对象自身的属性。 来看看一个对象拥有自身和继承属性的例子, Object.keys() 只返回自己的属性键: let simpleColors = { nameA: 'a', nameB: 'b' }; let natureColors = { colorC: 'green', colorD: 'yellow' }; Object.setPrototypeOf(natureColors, simpleColors); Object.keys(natureColors); // => ['colorC', 'colorD'] natureColors['nameA']; // => 'a' natureColors['nameB']; // => 'b' Object.setPrototypeOf() 方法设置一个指定的对象的原型 ( 即, 内部[[Prototype]]属性)到另一个对象或 null。 Object.keys(natureColors) 返回 natureColors 对象的自身可枚举属性键:

枚举

有些话、适合烂在心里 提交于 2019-11-25 19:08:02
某些类型的对象是有限的几个,这样的例子举不胜举: 星期:Monday(星期一)......Sunday(星期天) 性别:Man(男)、Woman(女) 月份:January(1月)......December(12月) 季节:Spring(春节)......Winter(冬天) 支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡) 员工工作状态:Busy(忙)、Free(闲)、Vocation(休假) 订单状态:Nonpayment(未付款)、Paid(已付款)、Fulfilled(已配货)、Delivered(已发货)、Checked(已确认收货)、Return(退货)、Exchange(换货)、Cancel(取消) 枚举类型本质上也是一种类,只不过是这个类的对象是固定的几个,而不能随意让用户创建。 在JDK1.5之前,需要程序员自己通过特殊的方式来定义枚举类型。 在JDK1.5之后,Java支持enum关键字来快速的定义枚举类型。 JDK1.5之前 构造器加private私有化 本类内部创建一组常量对象,并添加public static修饰符,对外暴露这些常量对象 1 public class TestEnum { 2 public static void main(String[] args