首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在MQL4/MQL5中,Enum可以有自己的方法吗?我可以将字符串作为值存储在枚举中吗?

在MQL4/MQL5中,Enum是一种用于定义一组相关常量的数据类型。它可以用于表示一组预定义的值,但是在MQL4/MQL5中,Enum不能有自己的方法。Enum只能用于定义常量,并且这些常量的值必须是整数类型。

在MQL4/MQL5中,Enum只能存储整数值,不能直接存储字符串。如果需要将字符串作为值存储在枚举中,可以使用字符串常量的索引来代表不同的字符串。例如,可以定义一个字符串数组,然后使用数组的索引作为枚举的值来表示不同的字符串。

以下是一个示例:

代码语言:txt
复制
string[] strings = {"String1", "String2", "String3"};

enum StringsEnum
{
    String1 = 0,
    String2 = 1,
    String3 = 2
}

// 使用枚举值来获取对应的字符串
string GetString(StringsEnum value)
{
    return strings[value];
}

// 使用字符串来获取对应的枚举值
StringsEnum GetEnum(string str)
{
    for (int i = 0; i < ArraySize(strings); i++)
    {
        if (strings[i] == str)
            return (StringsEnum)i;
    }
    return -1;
}

在上面的示例中,定义了一个字符串数组strings,然后定义了一个枚举StringsEnum,枚举的值对应了字符串数组的索引。通过GetString函数可以根据枚举值获取对应的字符串,通过GetEnum函数可以根据字符串获取对应的枚举值。

这样,就可以在MQL4/MQL5中实现将字符串作为值存储在枚举中的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

可以不source脚本情况下变量从Bash脚本导出到环境

/usr/bin/env bash export VAR="HELLO, VAR" 当我执行脚本并尝试访问 $VAR 时,没有得到任何!...echo $VAR 有没有一种方法可以通过只执行 export.bash 而不 source 它获取 $VAR? 答: 不可以。 但是几种可能解决办法。...调用 shell 上下文中执行脚本: $ cat set-vars1.sh export FOO=BAR $ . set-vars1.sh $ echo $FOO BAR 另一种方法脚本打印设置环境变量命令.../set-vars2.sh)" $ echo "$FOO" BAR 终端上执行 help export 可以查看 Bash 内置命令 export 帮助文档: # help export export...help eval 相关阅读: 用和不用export定义变量区别 shell编程$(cmd) 和 `cmd` 之间什么区别 ----

13620

MQL5从入门到精通【第二章】变量与数据类型(四)

这些变量展示程序属性窗口。 输入变量由input关键字声明。放置程序顶部,在所有程序代码和任意函数之前定义。输入变量可以是任意类型,包括枚举。但是数组和结构体不能用于输入变量。...静态输入变量可以用sinput关键词声明。静态输入变量可以修改,但是策略测试不可优化。静态输入变量仅在输入参数逻辑组合上有些意义。...不过MQL4用户可能不填习惯了,因为MQL4局部变量,无论定义函数那个地方,函数体内均有效!这个不同之处,希望大家清楚。...# 预定义变量 Predefined Variables MQL5内有许多预定义变量,可供全局使用。这些变量个共同点,是以下划线开头。这些变量程序内到处都是,可是程序依然那么好读。...预先定义变量MQL5程序启动之前通过客户端建立,预先定义变量是不变,也不会通过MQL5程序转变。例外是,特殊变量_LastError,通过ResetLastError函数重设至0。

82920

MQL5从入门到精通【第二章】变量与数据类型(三)

一周七天,用不到小于0,或大于7数。但是计1,2,3这种太抽象,难以理解,计算机明白了,写程序还没明白呢。怎么办?可以给一列对应,用字符串指代数字,再把字符串命名地有意义一些,不就方便记忆了。...enum关键字,加上一个变量名,然后大括号中间,就是枚举。各个之间使用逗号分开,严格这个写法,编译器就给你过。 我们会很好奇,这么个玩意儿什么用?其实,枚举是从0开始。...Print(Day); // 输出 = 1 难道只能枚举几个,只能用0,1,2......这些数字?这也太不自由了。...可以手动指定对应,如果下一个没有指定对应整数值,那么就是前一个+1递增。 规律是需要牢记。 当然,好编程实践,或工程使用,我们会给所有的枚举,手动指定对一个整数,保证一个也跑不偏!...声明之后就可以用点方法访问结构体属性。读写均可。 MQL5预定义结构体,因为交易中经常使用。比如服务返回交易数据结构。MqlTick结构存储了最新时间,价格,和当前最后价格交易量。

85540

MQL5从入门到精通「第二章」变量与数据类型(一)

比如上述count变量,无初始,那么编译器将其默认设置为系统默认0。 MQL4int型,而MQL5则区分出4种类型。因为负,是符号数,最高一位0为正,1为负。...工程实践,我们推荐double型。MQL5函数内经常使用。float型常用语存储和处理大型实数填充数组。 # 字符串类型 string type 就是字面意思,一串字符。...写时候注意函数参数位置,还有参数数据类型就可以了。 MQL5给出了相对宽松字符串赋值方式。如果你多行字符串输出,meta editor内直接换行就可以了,程序会将其连为一体。...这是MQL5独有的哦。顾名思义,就是用来存颜色。颜色可以是预定义好颜色常量,RGB,或者十六进制。 巧了,这个独门秘技,MQL5程序内用超级多。...编程善用系统颜色常量你会发现非常有用。 # 日期时间类型 datetime type 该类型用于存储日期时间。系统内,是使用unix时间戳方式存储

1.6K50

TypeScript魔法堂:枚举超实用手册

前端一直都需要枚举 敢保证,前端同学都会万分肯定地告诉大家:我们从来没有写过枚举。那是因为虽然ECMAScriptenum作为保留字,但至ES2020为止还没有提出枚举实现规范。...数字枚举类型和字符串枚举类型 TypeScript官网教程已经对枚举类型进行了详细讲解说明,认为最核心是理解清楚其分为两大类: 数字枚举类型 enum Response { No = 0,...为了避免额外生成代码上开销和额外非直接枚举成员访问,我们可以使用 const枚举”,那是为什么呢?...使用enum场景第一条还很好理解,但第二条是啥回事呢?这里个真实发生示例,可以让大家更好理解: 背景:为PhotoshopExtendScript编写类型声明。...需求:DialogModes.NOExtendScript返回为DialogModes.No本身,编译后JavaScript必须保留DialogModes.NO代码形式。

1.2K20

Java枚举:小小enum,优雅而干净

就是本篇主角——枚举Enum)——大家鼓掌了。 之前很长时间一段时间里,都不怎么用枚举,因为总感觉它没什么用处——这其实就是“自我认知”短见。...("今天一边高兴,一边失落"); break; } 通过case关键字判断时候,可以直接使用枚举,非常简洁。...另外,在编译期间限定类型,可以有效避免越界情况——字符串常量类型作为switch判断条件时候很容易因为误写而发生越界问题。...那么现在,我们可以Mybatis配置文件中使用typeHandler数据库字段转化为枚举类型。...按理解,问这个问题的人就好像是问“0.000,001”比“0.000,000,99”大?你说是? (完)

61130

Java枚举:小小enum,优雅而干净

之前很长时间一段时间里,都不怎么用枚举,因为总感觉它没什么用处——这其实就是“自我认知”短见。当一个人一直蹲在自己深井里而不敢跳出来的话,那他真的只能看到井口那么大点天空。...("今天一边高兴,一边失落"); break; } 通过case关键字判断时候,可以直接使用枚举,非常简洁。...另外,在编译期间限定类型,可以有效避免越界情况——字符串常量类型作为switch判断条件时候很容易因为误写而发生越界问题。...那么现在,我们可以Mybatis配置文件中使用typeHandler数据库字段转化为枚举类型。...按理解,问这个问题的人就好像是问“0.000,001”比“0.000,000,99”大?你说是

43620

枚举其实很有用,用对了能避免不少Bug呢

这些信息在数据库中会以某种标识符进行保存,但是这些标识符代码如何呈现,每个开发者都有一套自己习惯,这种个性化习惯大型项目开发时可能会因代码规范问题导致严重bug,在此,笔者阐述下在开发过程解决思路...//如果sex是字符串,java可以通过==对比值?...字符串直接==比对不是比对Value。相信学习java时就会重点说明,但是不巧,开发也见过有这种写法。...字符串通过eq方法比对一般是没有问题,但是字符串类型eq方法里传入是一个Object类型,因此,即使传入一个数值类型也不会编译错误。...二、代码优化 2.1、枚举对应数据库字段 例如如上定义,通过表明+Enum定义java类名,类通过枚举对应到数据库字段,这样可以多人开发时避免出现状态码定位不一致问题,从而使得代码一个良好可读性

36140

Java——枚举:优雅而干净enum

之前很长时间一段时间里,都不怎么用枚举,因为总感觉它没什么用处——这其实就是“自我认知”短见。当一个人一直蹲在自己深井里而不敢跳出来的话,那他真的只能看到井口那么大点天空。...: System.out.println("今天一边高兴,一边失落"); break; } 通过case关键字判断时候,可以直接使用枚举,非常简洁。...另外,在编译期间限定类型,可以有效避免越界情况——字符串常量类型作为switch判断条件时候很容易因为误写而发生越界问题。...那么现在,我们可以Mybatis配置文件中使用typeHandler数据库字段转化为枚举类型。...按理解,问这个问题的人就好像是问“0.000,001”比“0.000,000,99”大?你说是

2.9K00

【面试必备】Swift 面试题及其答案

Objective-C ,引用类型变量是可以缺少,并且使用 nil 作为缺少。基本数据类型如 int 或者 float 没有这种功能。...问题3- 常量定义区别 ---- Objective-C ,一个常量可以这样定义: const int number = 0; 类似的Swift是这样定义: let number = 0 两者之间什么不同...高级 问题1- 能解释一下用泛型来声明枚举问题 ---- Swift ,你能解释一下用泛型来声明枚举问题?...拿下面代码 Either 枚举来举例说明吧,它有两个泛型类型参数 T 和 V,参数 T 关联类型为left情况下使用,参数 V关联为 rihgt 情况下使用,代码如下: enum Either...下面的例子是一个枚举类型,它在Node 条件下有两个相关联类型 T 和 List: enum List{ case Node(T, List) } 什么关键字可以实现递归枚举

5.9K30

你一定需要知道高阶JAVA枚举特性!

JAVA枚举,比你想象功能还要强大! 经常发现自己Java中使用枚举来表示某个对象一组。 在编译时确定类型可以具有什么能力是一种强大能力,它为代码提供了结构和意义。...当我第一次了解枚举时,当时认为它们只是一个为常量命名工具,可以很容易地被静态常量字符串ENUM_VAL_NAME所取代。 后来发现错了。...Java枚举是Object一个子类。让我们看看所有枚举基类,Enum(为简洁起见进行了修改)。...函数枚举实现 因为枚举是类,所以我们可以创建一个枚举字段来保存执行操作函数。 但是我们找到解决方案之前,让我们先来看看一些重构。 首先,让我们把开关放在enum。...关键要点 Enum枚举Enum扩展类。 Enum枚举可以字段、构造函数和实例方法Enum枚举字段可以存储函数。

40520

【面试必备】Swift 面试题及其答案

Objective-C,引用类型变量是可以缺少值得,并且使用nil作为缺少。基本数据类型如int 或者float没有这种功能。...Swift用optional扩展了基本数据类型和引用类型缺少概念。一个optional类型变量,在任何时候都可以保存一个或者为nil。...高级 问题1- Swift 1.2 Swift1.2版本,你能解释一下用泛型来声明枚举问题?...拿下面代码Either枚举来举例说明吧,它有两个泛型类型参数T和V,参数T关联类型为left情况下使用,参数V关联为rihgt情况下使用,代码如下: enum Either{ case Left...下面的例子是一个枚举类型,它在Node条件下有两个相关联类型T和List: enum List{ case Node(T, List) } 什么关键字可以实现递归枚举

2.7K20

.NET面试题解析(01)-类型与引用类型

C#支持哪几个预定义类型?C#支持哪些预定义引用类型? 10. 几种方法可以判定类型和引用类型? 11. 说说类型和引用类型生命周期? 12....托管堆是基于进程,当然托管堆内部还有其他更为复杂结构,兴趣可以深入了解。 结合下图理解,变量a及其3都是存储栈上面。...变量b栈上存储,其指向字符串“123”托管堆对象地址(字符串是引用类型,字符串对象是存储托管堆上面。字符串是一个特殊引用类型,后面文章会专门探讨)” ? 类型一直都存储栈上面?...enum、int[]和string呢? enum枚举类型,其他都是引用类型。 4. 堆和栈区别?...结构是类型,两种情况会分配在对上面: 结构作为class一个字段或属性,会随class一起分配在堆上面; 装箱后会在堆存储,尽量避免类型装箱,类型拆箱和装箱都有性能损失,下一篇会重点关注

77420

开发经验|如何优雅减少魔法使用

1 魔法 Java开发,Java魔法又叫做魔法数值、魔法数字、魔法。...2.1 静态常量 如果该作用域一个类或者同一个包下,一般可以使用静态常量来解决。...2.2 使用接口 既然我们使用了静态常量那么我们可以魔法封装入接口也是可以。...很多情况这种写法就够用了,你可以通过 GenderEnum.MALE.ordinal() 获取对应枚举数字序号,也可以通过GenderEnum.MALE.name()获取对应枚举字符串名称。...事实上,许多人都是中年甚至老年时才找到自己真正热爱事情并开始学习。感觉学习给予最大快乐就是预防以后老年痴呆症。 正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

21320

走进 JDK 之 Enum

什么是枚举 什么是枚举?说实话,这些年开发生涯,用过枚举次数大概两只手都可以过来。当然你不能说枚举一无是处,只能说是对 Java 理解还不够深刻,可以使用枚举时候并没有去使用。...了,因为参数是枚举类 Child,输入范围已经被限定为定义枚举,输入其他无法通过编译。...但是枚举对序列化作了一定限制,序列化时候仅仅是枚举对象 name 属性输出到结果,反序列化时候则是通过 Enum.valueOf() 方法来查找枚举对象。...ordinal 就是声明次序,之所以 switch 可以使用枚举,就是因为编译器会自动调用枚举 ordinal() 方法。...枚举种种特性都特别契合单例模式,天生线程安全和反序列化安全,这都是其他单例模式所不具备。但是所见过代码,真正使用枚举去做单例好像少之又少。具体原因有待考究。 真的要使用枚举

64130

JDK基础类库java.util包下那些你可能不知道工具们大盘点(一)EnumMap、EnumSet【享学Java】

其实有小伙伴包括也这样疑问过,我们都可以自己使用Map来实现,为何要使用EnumMap呢? 答案是:它性能高。因为它内部是**用数组数据结构**来维护!...unmaskNull(vals[((Enum)key).ordinal()]) : null); } } 它get方法,直接使用ordinal()去数组里拿,那可不效率高。...,EnumSet所有元素都必须是指定枚举类型枚举,该枚举类型创建EnumSet时显式或隐式地指定。...StringTokenizer和StringJoiner StringTokenizer JavaStringTokenizer类用于字符串分解为标记,效果类似split,但split方法@since...Java 8,Base64编码已经成为Java类库标准,内置了 Base64 编码编码器和解码器。

91020

Java枚举线程安全性及序列化问题

Java SE5提供了一种新类型-Java枚举类型,关键字enum可以一组具名有限集合创建为一种新类型,而这些具名可以作为常规程序组件使用,这是一种非常有用功能。...要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum?...关于这个问题,一篇为什么墙裂建议大家使用枚举来实现单例。单独介绍过,这里再回顾一下。 1. 枚举写法简单 写法简单这个大家看看单例模式七种写法里面的实现就知道区别了。...但是,为了保证枚举类型像Java规范中所说那样,每一个枚举类型极其定义枚举变量JVM中都是唯一枚举类型序列化和反序列化上,Java做了特殊规定。英文原文就不贴了。...大概意思就是说,序列化时候Java仅仅是枚举对象name属性输出到结果,反序列化时候则是通过java.lang.EnumvalueOf方法来根据名字查找枚举对象。

1.2K10

JPA不识别MySQL枚举类型

1 枚举好用?...数据字典型字段,枚举比Integer好: 限定,只能赋值枚举那几个实例,不能像Integer随便输,保存和查询时候特别有用 含义明确,使用时不需要去查数据字典 显示存储直接映射,不需要手动转换...,比如1页面上显示为启用,0显示禁用,枚举定义好可以直接显示 基于enum可以添加一些拓展方法 但默认 2 JPA不识别MySQL enum 类型 会报错: Cannot determine value...枚举需求其实很简单: 保存int型 自己指定 可惜默认那两种都实现不了。...没法,只能考虑保存和取出时候自己转换,找到实体转换器AttributeConverter,自定义保存好取出时数据转换,解决! 关注,紧跟本系列专栏文章,咱们下篇再续!

3900

细说枚举

3 ,这时第二个枚举整数常量就不是 1 了,而是 4 ,因为当枚举没有显示赋值时,将会按照上一个枚举对应整数值加 1 来作为自己本身对应整数值。...当然,你也可以利用 Enum.GetNames 和 Enum.GetName 方法来获取。下面简单来讲解一下这两个方法使用。...字符串转换为枚举也很简单,同样用到了 Enum 基类一个静态方法 Parse ,例如我们 JP 转换为枚举 Country 枚举可以这么做 (Country)Enum.Parse(typeof(...这里一点需要注意,TryParse 方法 .net 4.0 才出现,因此如果要在 .net 4.0 以下版本中将字符串转换为枚举时,需要进行恰当错误处理防止字符串不存在与枚举类型枚举。...#### 四、小结 这篇文章主要讲解了枚举相关知识,内容有点琐碎,但是实际开发还是比较实用。文章所提到要点和规定在实际开发已经经过验证,各位读者可以直接拿来使用。

1.9K10
领券