如何获得枚举类行的值

如何获得枚举类行的值,第1张

public enum Test {

ONE(1),

TWO(2),

THREE(3),

FOUR(4),

FIVE(5),

SIX(6),

SEVEN(7),

EIGHT(8),

NINE(9),

TEN(10);private int value;

private Test(int value){

thisvalue = value;

}

public static void main(String [] args) {

int j = 0;

for(int i = 0; i < Testvalues()length; i++) {

Systemoutprintln(Testvalues()[i]value);

}

}}

问题:我有一个输入框,让用户只能从规定列表中选取值输入,那么我就要用enum,但是enum输出的值是它的value,value永远都是从0开始的递增数,我才不想要这个数值,我想要用户在列表中选取的的那个数值。

精简:即获取enum中的item值,而不是value。

思路:获取到item列表(string类型),用value去index这个列表,再转换为数值

If an enum control or indicator exists, create a property node for the enum and select the Strings[] property This property returns an array of strings for the specified enum Then use the Index Array function with the enum wired to the index terminal to access the desired string

If there is no enum control or indicator in the VI, wire the enum to the Format Into String function input; with a string value of %s wired to the format string input This function returns the string value associated with the input enum value

两种方法都画在下面

声明一个方向的枚举,包含四个枚举值: 东/西/南/北

Swift 的枚举成员在被创建时本身就是完备的值,这些值的类型是已经明确定义好的 Direction 类型 不会像 Objective-C 一样被赋予一个默认的整型值。在上面的 Direction 例子中,east、west 、north、south不会被隐式地赋值为 0,1,2 和 3。

Swift 中的枚举更加灵活,不必给每一个枚举成员提供一个值。如果给枚举成员提供一个值(称为原始值),则该值的类型可以是:字符串、字符、任意的整数值或浮点类型。

Swift的枚举类型提供了一个叫原始值(RawValues)的实现,它为枚举项提供了一个默认值,这个默认值在编译期间就是确定的。

通过原值值获取的枚举项是可选类型的,所以需要用if let 做一下判断。

未指定枚举值类型

隐式原始值

隐式原始值下枚举项使用系统的分配值:

显式原始值

隐式 + 显式原始值

这里使用了属性观察者,Swift里面的枚举更像一个对象,因此可以很方便的使用属性观察者对枚举值进行监听。

在 Swift 中,还可以定义这样的枚举类型,它的每一个枚举项都有一个附加信息,来扩充这个枚举项的信息表示,这又叫做关联值。

一定要学会使用关联值,这一点很重要。具体的使用后面的第九节会细说

通常情况下枚举是很容易进行相等判断的。一旦为枚举增加了关联值,Swift就没法正确的比较了,需要自己对该枚举实现 == 运算符。

借助 Comparable 协议,来实现枚举的比较。

遵守 CaseIterable 协议的swift枚举是可以遍历的,通过allCases获取所有的枚举成员

app里面的接口地址,如果都放一起,命名或者寻找都不方便,可以用枚举的嵌套来设计。可以分散在多个文件中,方便维护和管理。

用枚举来管理系统里面的常量是一个不错的选择。

枚举中不能使用存储属性,但是可以使用计算属性,计算属性的内容是在枚举值或者枚举关联值中得到的。

在这里,可以认为枚举是一个类,introduced是一个成员方法,AppleDeivceiPhone 就是一个AppleDeivce的实例,case们是它的属性。introduced里面的switch self,其实就是遍历这个匿名属性的所有场景,如iPad,iPhone等,然后根据不同的场景返回不同的值。

可以做枚举的自定义构造方法。

系统的打印协议

让枚举遵守这个协议

枚举可以进行扩展。可以将枚举中的case与method/protocol分隔开,阅读者可以快速消化枚举的内容。

设计一个网络类下的错误信息的处理功能。

在项目中经常使用 UserDefaults 来存储一下简单的用户信息。但是对 Key 的维护不会很方便。而且会想不起来。用枚举+结构体就能很好的解决这个问题。

这么设计APP的存储模块,是不是更有层级感,更加方便使用呢?

递归枚举是拥有另一个枚举作为枚举成员关联值的枚举。当编译器 *** 作递归枚举时必须插入间接寻址层。可以在声明枚举成员之前使用 indirect关键字来明确它是递归的。 也可以声明在整个枚举前,让所有的枚举成员都是递归的。

如果数值是尽可能连续的可以用一个数组存放对应的字符串

类似 char xxx[] = {"zero", "one", "two", "three",};

如果不是写一个函数类似

char f(int x)

{

switch (x)

{

case 1: return "one";

case 5: return "five";

case 10: return "ten";

}

return "unknown";

}

在C#中,枚举用来定状态值很方便,例如我定义一个叫做Season的枚举

public enum Season

{

Spring = 1,

Summer = 2,

Autumn = 3,

Winter = 4

}

枚举名是不能出现空格,()-/等字符

我们想把Spring显示为春天,我们要自己定义说明信息,我们可以使用DescriptionAttribute,如下

public enum Season

{

[Description("春 天")]

Spring = 1,

[Description("夏 天")]

Summer = 2,

//[Description("秋 天")]

枚举。

一、Enum的定义 

public enum UserRolesType

{

UnKnown=0,

BaseSimple=70,

BaseBasic=71,

BaseExtend=72,

BaseBasic2=88,

BaseSimple2=89,

BaseExtend2=90

}

方法一:

根据ID获取枚举对象

protected UserRolesType GetEnum(int t)

{

bool isInEnum = false;

UserRolesType c = UserRolesTypeUnKnown;

if (t > 0)

{

foreach(int i in EnumGetValues(typeof(UserRolesType)))

{

if (i == t)

{

//thisDebug(tToString(), "");

c =(UserRolesType)EnumParse(typeof(UserRolesType),iToString());

isInEnum = true;

return c;

//(Colors)EnumParse(typeof(Colors), "Red, Yellow");

}

}

if (isInEnum == false)

{

return UserRolesTypeUnKnown;

}

}

return c;

}

方法二:根据ID获取枚举名称

protected string GetEnumName(int s)

{

string str=EnumGetName(typeof(UserRolesType), s);

if (str == null)

{

str = UserRolesTypeUnKnownToString();

}

return str;

}

以上就是关于如何获得枚举类行的值全部的内容,包括:如何获得枚举类行的值、labview 中获取enum中的item信息,not value、Swift-细说枚举(Enum)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9316237.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存