gpt4 book ai didi

javascript - 动态更新因变量

转载 作者:行者123 更新时间:2023-12-02 17:21:40 26 4
gpt4 key购买 nike

刚刚发现我的 cs 知识中存在一个漏洞...这段代码是用 VBA 编写的,但我真的很想知道如何在 javascript 中执行此操作!

基本上,我所处的情况是一整套变量依赖于一个变量 - 像这样:

Sub test()
Dim start As Integer
Dim var1 As Integer
Dim var2 As Integer
Dim var3 As Integer

var1 = start + 1
var2 = start + 2
var3 = start + 3
End Sub

我的问题是,例如,我希望 var1、var2 和 var3 的值根据 start 的值动态更新

Sub test()
Dim start As Integer
Dim var1 As Integer
Dim var2 As Integer
Dim var3 As Integer

start = 0
var1 = start + 1
var2 = start + 2
var3 = start + 3

' would like to have var1 = 1, var2 = 2, var3 = 3
MsgBox "start = " & start & vbNewLine & _
"var1 = " & var1 & vbNewLine & _
"var2 = " & var2 & vbNewLine & _
"var3 = " & var3

start = 5

' would now like to have var1 = 6, var2 = 7, var3 = 8
MsgBox "start = " & start & vbNewLine & _
"var1 = " & var1 & vbNewLine & _
"var2 = " & var2 & vbNewLine & _
"var3 = " & var3
End Sub

但显然这不起作用,我得到相同的值

var1 = 1, var2 = 2, var3 = 3

两次。有没有办法让这个在VBA中工作?这种东西有一个名字吗?这样我可以更好地用谷歌搜索它?像“动态因变量”之类的东西?非常感谢!

最佳答案

我猜您正在寻找类似 Excel 单元格公式及其级联更新方式的内容。没有像 VBA 那样的内置编码机制。有一些编程语言使用名为 Functional Programming 的范例。通过将函数链接在一起并以惰性方式求值,其行为方式类似,但 VBA 更像是一种(弱)面向对象的命令式风格。

解决此类问题的一种方法通常是创建一个类来封装所有计算,并使用成员变量作为首先设置的计算的基本元素,例如 start,以及导数函数,例如 var1var2var3

这是一个例子。创建一个名为 clsRectangle 的类并复制以下内容:

Option Compare Database
Option Explicit

Public length As Integer
Public width As Integer

Public Property Get diagonal() As Double
diagonal = VBA.Sqr((length ^ 2) + (width ^ 2))
End Property

Public Property Get area() As Integer
area = length * width
End Property

Public Property Get perimeter() As Integer
perimeter = 2 * (length + width)
End Property

接下来创建一个名为 mdlMain 的模块并添加以下内容:

Public Sub Main()
Dim rect As clsRectangle
Set rect = New clsRectangle

With rect
.length = 3
.width = 5

MsgBox "perimeter: " & .perimeter & vbCrLf & _
"diagonal: " & .diagonal & vbCrLf & _
"area: " & .area & vbCrLf

'After changing the underlying numbers (like *start* in your example)
'area, perimeter and diagonal all return new values
.length = 2
.width = 7

MsgBox "perimeter: " & .perimeter & vbCrLf & _
"diagonal: " & .diagonal & vbCrLf & _
"area: " & .area & vbCrLf
End With
End Sub

在编译时构建一个类来处理公式计算是一种很好的做法,因为它以非常可维护的方式公开数学和逻辑,并受益于语言的语法和类型检查。然而,它确实缺乏运行时系统的一些灵 active 。如果你想尝试类似的事情,我可以给你一些指导,但这将是一个相当繁重的任务。我过去做过类似的事情,并且必须实现[拓扑排序]来根据先决条件图确定执行计算更新的顺序。

<小时/>

我无法直接与 Javascript 对话,因为我没有太多使用它的经验。然而,Javascript 是一种比 VBA 更加动态的语言,并且完全有可能已经存在库来完成您想要的操作。

关于javascript - 动态更新因变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23895567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com