You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SRL中将字符串值与枚举中的值进行比较(Blaze Advisor相关)

SRL枚举与字符串类型比较的正确实现方式

错误根因

你遇到的类型不兼容报错,是因为CompanyList是枚举类型,迭代时的it变量是枚举实例,而anApplicant.employementDetail.organisation是字符串类型,不同类型的变量直接用=判等不符合SRL的语法规范。

正确实现方案

方案1:将枚举实例转字符串比较(最简单)

直接调用枚举实例的toString()方法获取枚举的编码名称,和字符串字段判等即可,代码如下:

for each CompanyList do 
{
    if anApplicant.employementDetail.organisation = it.toString() then
    {
        print("companies: " & it)
        break
    }
}

注:原代码中print("companies" it)写法错误,SRL中字符串与变量拼接需使用&符号

方案2:将字符串转枚举实例比较(更规范)

如果后续还要用到匹配到的枚举实例,推荐先把字符串转为对应枚举类型再比较,避免重复转换。转换前建议先校验字符串是否是合法的枚举值,避免运行时异常:

// 先校验字符串是否匹配枚举项名称
if CompanyList.isValidName(anApplicant.employementDetail.organisation) then
{
    def targetCompany as CompanyList = CompanyList.valueOf(anApplicant.employementDetail.organisation)
    print("companies: " & targetCompany)
}

这个方案不需要额外循环遍历枚举,性能更优。

方案3:枚举自定义属性匹配

如果你存储的organisation字段不是枚举的编码名称,而是枚举的中文展示名/业务值,需要先给CompanyList枚举添加对应的自定义属性(比如displayName),再遍历匹配:

for each CompanyList do 
{
    if anApplicant.employementDetail.organisation = it.displayName then
    {
        print("companies: " & it)
        break
    }
}

内容的提问来源于stack exchange,提问作者phani kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 20:18:01