加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp-classic – VBScript条件短路解决方法

发布时间:2020-12-15 23:31:48 所属栏目:asp.Net 来源:网络整理
导读:我有一个大的经典的ASP应用程序,我必须维护,我反复发现自己被缺乏短路评估能力所阻挠.例如,VBScript不会让你摆脱: if not isNull(Rs("myField")) and Rs("myField") 0 then... …因为如果Rs(“myField”)为空,则在第二个条件中会收到一个错误,将null与0进行
我有一个大的经典的ASP应用程序,我必须维护,我反复发现自己被缺乏短路评估能力所阻挠.例如,VBScript不会让你摆脱:
if not isNull(Rs("myField")) and Rs("myField") <> 0 then
...

…因为如果Rs(“myField”)为空,则在第二个条件中会收到一个错误,将null与0进行比较.因此,我通常会这样做:

dim myField
if isNull(Rs("myField")) then 
    myField = 0
else
    myField = Rs("myField")
end if

if myField <> 0 then
...

显而易见,这是一个令人震惊的消息.围绕这个大代码库,我发现最好的解决方法是使用原始程序员写的函数,称为TernaryOp,它基本上以三进制类似于操作符的功能移植,但是我仍然使用一个临时变量需要一个更全面的语言.有没有更好的办法? VBScript中确实存在一些超级秘密的短路方式?

解决方法

也许不是最好的方法,但它肯定是有效的…另外,如果你在vb6或.net,你可以有不同的方法投射到正确的类型.
if cint( getVal( rs("blah"),"" ) )<> 0 then
  'do something
end if


function getVal( v,replacementVal )
  if v is nothing then
    getVal = replacementVal
  else
    getVal = v
  end if
end function

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读