枚举类型

如何建模类型安全的枚举类型?

≯℡__Kan透↙ 提交于 2020-03-20 21:13:33
3 月,跳不动了?>>> Scala没有像Java那样的类型安全 enum 。 给定一组相关常量,Scala表示这些常量的最佳方法是什么? #1楼 您可以使用密封的抽象类而不是枚举,例如: sealed abstract class Constraint(val name: String, val verifier: Int => Boolean) case object NotTooBig extends Constraint("NotTooBig", (_ < 1000)) case object NonZero extends Constraint("NonZero", (_ != 0)) case class NotEquals(x: Int) extends Constraint("NotEquals " + x, (_ != x)) object Main { def eval(ctrs: Seq[Constraint])(x: Int): Boolean = (true /: ctrs){ case (accum, ctr) => accum && ctr.verifier(x) } def main(args: Array[String]) { val ctrs = NotTooBig :: NotEquals(5) :: Nil val evaluate =

mvc中枚举的使用和绑定枚举值到DropDownListFor

柔情痞子 提交于 2020-03-20 20:37:04
1.EnumManage.cs新建枚举类 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel; using System.Reflection; using System.Web.Mvc; namespace Manage.Extension { //枚举 public enum TableStatus { [EnumDisplayName("空台桌")] EmptyTable = 1, [EnumDisplayName("已出单")] Single = 2, [EnumDisplayName("未出单")] NoSingle = 3, [EnumDisplayName("预定台")] Schedule = 4, [EnumDisplayName("呼叫")] Call = 5, [EnumDisplayName("加菜")] AddDish = 6, [EnumDisplayName("下单")] Down = 7, [EnumDisplayName("结账")] Checkout = 8, } public class EnumDisplayNameAttribute : Attribute {

对象的扩展

巧了我就是萌 提交于 2020-03-19 04:34:35
属性的简洁表示法 ES6 允许直接写入变量和函数,作为对象的属性和方法。这样的书写更加简洁。 const foo = 'bar'; const baz = {foo}; baz // {foo: "bar"} // 等同于 const baz = {foo: foo}; 上面代码表明,ES6 允许在对象之中,直接写变量。这时,属性名为变量名, 属性值为变量的值。下面是另一个例子。 function f(x, y) { return {x, y}; } // 等同于 function f(x, y) { return {x: x, y: y}; } f(1, 2) // Object {x: 1, y: 2} 除了属性简写,方法也可以简写。 const o = { method() { return "Hello!"; } }; // 等同于 const o = { method: function() { return "Hello!"; } }; 下面是一个实际的例子。 let birth = '2000/01/01'; const Person = { name: '张三', //等同于birth: birth birth, // 等同于hello: function ()... hello() { console.log('我的名字是', this.name); } };

JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别

霸气de小男生 提交于 2020-03-17 08:29:04
ECMAScript将对象的属性分为两种: 数据属性 和 访问器属性 。每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举。 然后根据具体的上下文环境的不同,我们又可以将属性分为: 原型属性 和 实例属性 。原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性。 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适用场景。 for..in循环 使用for..in循环时,返回的是所有能够通过对象访问的、可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例。这里需要注意的是使用for-in返回的属性因各个浏览器厂商遵循的标准不一致导致对象属性遍历的顺序有可能不是当初构建时的顺序。 遍历数组 虽然for..in主要用于遍历对象的属性,但同样也可以用来遍历数组元素。 var arr = ['a', 'b', 'c', 'd']; // 使用for..in for (var i in arr) { console.log('索引:' + i + ',值:' + arr[i]); } // 使用for循环 for (var j = 0; j < arr.length; j++) {

JavaScript中in操作符(for..in)、Object.keys()和Object.getOwnPropertyNames()的区别

本小妞迷上赌 提交于 2020-03-13 19:28:37
ECMAScript将对象的属性分为两种: 数据属性 和 访问器属性 。每一种属性内部都有一些特性,这里我们只关注对象属性的[[Enumerable]]特征,它表示是否通过 for-in 循环返回属性,也可以理解为:是否可枚举。 然后根据具体的上下文环境的不同,我们又可以将属性分为: 原型属性 和 实例属性 。原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自己构造函数中,然后就是构造函数实例化后添加的新属性。 本文主要介绍JavaScript中获取对象属性常用到的三种方法的区别和适用场景。 for..in循环 使用for..in循环时,返回的是所有能够通过对象访问的、可枚举的属性,既包括存在于实例中的属性,也包括存在于原型中的实例。这里需要注意的是使用for-in返回的属性因各个浏览器厂商遵循的标准不一致导致对象属性遍历的顺序有可能不是当初构建时的顺序。 遍历数组 虽然for..in主要用于遍历对象的属性,但同样也可以用来遍历数组元素。 var arr = ['a', 'b', 'c', 'd']; // 使用for..in for (var i in arr) { console.log('索引:' + i + ',值:' + arr[i]); } // 使用for循环 for (var j = 0; j < arr.length; j++) {

C# 枚举相关操作——解析,遍历

淺唱寂寞╮ 提交于 2020-03-12 08:02:33
我们在开发过程中,有时会让枚举作为数据源来绑定一些下拉列表,这时就需要解析枚举名称和值 。 先看一个枚举的定义: 1 /// <summary> 2 /// 数据库类型 3 /// </summary> 4 public enum DatabaseType { 5 OleDb, 6 SqLite, 7 MssqlServer, 8 MySql, 9 Oracle, 10 Db2, 11 Other 12 } 1.使用所给的字符串匹配枚举类型 (DatabaseType) Enum.Parse(typeof (DatabaseType), "OleDb", true); // 最后一个参数 表示不区分大小写 2.获取枚举的字符串形式: DatabaseType.MySql.ToString() // MySql 3.获取枚举的值 (int)DatabaseType.MySql;  // 3 4.根据值获取枚举类型 (DatabaseType)3; //DatabaseType.MySql 5.根据所给枚举的字符串形式获取枚举的值 Enum.Format(typeof(DatabaseType), Enum.Parse(typeof(DatabaseType), "MySql"), "d") // 3 来源: https://www.cnblogs.com/jayshsoft/p

关于typescript 枚举类型转换为javascript 后文件解释

左心房为你撑大大i 提交于 2020-03-10 16:29:04
枚举   枚举类型是数字原始类型的一个确定子类型。它是一组相关的定义了枚举类型可能值的命名常量。 1 枚举声明   枚举声明声明一个枚举类型和枚举对象。   EnumDeclaration:     constopt enum BindingIdentifier { EnumBodyopt }   枚举声明:     const(可选) enum 绑定标识符{ 枚举体(可选)}   枚举类型声明向容器空间中引入一个命名类型和一个命名值。枚举类型是一个数字原始类型的确定子类型。枚举对象是一个匿名对象的值,它包含了一个属性集合,所有的枚举类型相对于枚举体中枚举类型声明的值。此外,枚举对象类型包含了一个“[x: number]: string”签名的数字索引签名。   枚举声明的标识符不能与预定义类型名相冲突。   静态枚举声明用“const”修饰符修饰。静态枚举声明成员必须都具有可以在编译时计算的静态值。 1 enum Color { Red, Green, Blue }   声明了一个数字原始类型的子类型“Color”,引入一个相应的变量“Color”; 1 2 3 4 5 6 var Color: { [x: number]: string; Red: Color; Green: Color; Blue: Color; };   数字索引签名是自动生成的枚举对象的”反向映射"

Yapi mock配置,名词解释

北战南征 提交于 2020-03-09 17:29:00
integer 整型数字 非枚举mock: "minimum": 5, // 最小值 "maximum": 8, // 最大值 "default": "6", // 默认值 "exclusiveMinimum": true, // 开启后,必须大于最小值 "exclusiveMaximum": true // 开启后,必须小于最大值 枚举mock: "enum": [200,500] // 整型数字枚举 "enumDesc": "200代表。。。" // 枚举备注 number 浮点数字 非枚举mock: "minimum": 5.6, // 最小值 "maximum": 6.5, // 最大值 "exclusiveMinimum": true, // 开启后,必须大于最小值 "exclusiveMaximum": true, // 开启后,必须小于最大值 "default": "5.7", // 默认值 枚举mock: "enum": [5.9, 6.6] // 浮点数字枚举 "enumDesc": "枚举备注" // 枚举备注 boolean 布尔类型 "default": true "default": false string 字符串类型 非枚举mock: "minLength": 3, // 最小长度 "maxLength": 8, // 最大长度 "default":

类和对象系列教材 (十三)- 枚举类型

断了今生、忘了曾经 提交于 2020-03-09 15:27:35
步骤1:预先定义的常量 步骤2:使用枚举的好处 步骤3:遍历枚举 步骤4:练习-枚举 步骤5:答案-枚举 步骤 1 : 预先定义的常量 枚举enum是一种特殊的类(还是类),使用枚举可以很方便的定义常量 比如设计一个枚举类型 季节,里面有4种常量 public enum Season { SPRING,SUMMER,AUTUMN,WINTER } 一个常用的场合就是 switch 语句中,使用枚举来进行判断 注: 因为是常量,所以一般都是全大写 HelloWorld.java Season.java public class HelloWorld { public static void main(String[] args) { Season season = Season.SPRING; switch (season) { case SPRING: System.out.println( "春天" ); break ; case SUMMER: System.out.println( "夏天" ); break ; case AUTUMN: System.out.println( "秋天" ); break ; case WINTER: System.out.println( "冬天" ); break ; } } } public enum Season { SPRING

EnumSet 分类: java 2015-06-03 21:02 7人阅读 评论(0) 收藏

安稳与你 提交于 2020-03-08 13:18:09
EnumSet是java专门为枚举类设计的集合类。其中EnumSet中不允许加入null值,并且java专门为EnumSet提供了如下static方法来创建EnumSet对象。 1. EnumSet .allOf(enum) 这个方法是加入你所选择的枚举类的所有对象 2. EnumSet.of(enum.value1,enum.value2....);这个方法是加入某些枚举类类型的对象 3. EnumSet.noneOf(enum)这个方法是创建一个enum类型相同的 EnumSet ,只是其中的值为空。 4. EnumSet range(first,last)这个方法是从对象中的一个元素到另外一个元素的遍历 5. EnumSet.complementOf(class type)这个方法是从某个 EnumSet 对象中除掉 EnumSet 1的元素,最后返回剩下的值 如下图: 除了上面所说的方法, EnumSet 还可以复制另外一个 EnumSet 来创建对象,或者直接复制Collection来创建对象,但是,利用Collection来创建 EnumSet ,必须保证Collection中的每个元素都是同一种类型。 如下: 其中,我用eclipse创建了一个enum枚举类Season; 上述所说全是个人理解,有错误请指点 版权声明:本文为博主原创文章,未经博主允许不得转载。 来源: