zoukankan      html  css  js  c++  java
  • volcanol的工控博客

      在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决

    定在什么范围内可以访问。

      同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间

    这个主要是对于类的实例化对象有意义。

      vbs的函数和过程对参数变量进行读写的时候,在利用byVal和byRef的行为是不同的。

    具体不多说,看代码。

    一、代码

    ' vbs变量的作用域和生命周期
    
    '  作用域
    '1、vbs的变量有三种作用域: 脚本级作用域、过程级作用域、类级作用域
    '2、vbs变量的作用域与三个关键字有关: Dim、Private、Public
    '3、一般Private、Public用在类中, dim用在脚本级和过程级中
    '4、关于Private和Public在后面类中进行描述
    
    Option Explicit 
    
    '定义脚本级变量
    '脚本级变量在整个脚本都可用
    Dim strUserName
    strUserName = "volcanol"
    
    '调用方法访问脚本级变量,
    DisplayGlobalVarible
    
    DisplayUserName
    
    
    Sub DisplayUserName()
        '定义过程级变量,且这个变量与外面的变量同名,
        '因此这个变量就将
        Dim strUserName
        strUserName = InputBox("输入名字")
        MsgBox strUserName
    End Sub
    
    Sub DisplayGlobalVarible()
        '访问全局变量
        MsgBox strUserName
    End Sub
    
    
    '变量的生命周期
    '1、脚本级的变量的生命周期是脚本运行的整个期间
    '2、过程或者函数级变量的生命周期是函数、过程调用的整个期间
    '3、类级的变量生命周期是类的对象存续的期间
    '具体这个就不说了, 慢慢体会吧
    
    
    '函数、过程调用的传值byval和传址byref
    '
    '1、byval 就和C语言中的普通参数一样,对原参数不会进行修改
    '2、byref 就和C语言中的指针参数一样,可以对原参数进行修改,
    '   当然,如果byref不进行赋值操作的话,也不会进行修改
    
    Dim lngByVal
    Dim lngByRef
    
    lngByVal = 10
    lngByRef = 20
    
    '调用传值参数,不改变原来的参数
    subByVal lngByVal
    
    '调用传址参数,改变原来的值
    subByref lngByRef
    
    MsgBox lngByVal & vbNewLine & lngByRef
    
    
    '说明一点, 对于传址调用的检查不能保证100%的有效果
    '这里,按照正常用法,应该传递变量
    subByRef 10
    
     
    '传值参数
    Sub subByVal(byval lngPar)
        lngpar = lngpar + 100
    End Sub
    
    '传址参数
    Sub subByRef(byref lngPar)
        lngpar = lngpar + 200
    End Sub

    二、Tips

    1、变量的作用域越大,引起的bug的可能性越大,因此最好不要轻易修改脚本级的变量。

    2、传值、传址这个需要注意,一般情况下最好用传值

    3、如果一个函数或者过程只需要返回一个值,那么就用函数返回至,而不要用过程使用

    ByRef的方式来返回值。

    --------------------------------------------------------------分割线---------------------------------------------------------------

    1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/

    2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料

    3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏 

    4、或者在页面右下角点推荐哟!!!

    --------------------------------------------------------------分割线---------------------------------------------------------------

  • 相关阅读:
    Code基础——2.排序
    设计模式——4.装饰模式
    Shader笔记——1.光照基础
    C#笔记——7.序列化与反序列化
    C#笔记——6.反射与特性
    lua小技巧记录--新建对象时重置元表
    发现的lua小技巧记录--在:方法中使用self的技巧
    lua版pureMVC框架使用分析
    在xlua中使用DoTween动画插件
    Unity工程性能优化学习笔记
  • 原文地址:https://www.cnblogs.com/volcanol/p/10080556.html
Copyright © 2011-2022 走看看