- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Def[Type]
VBA 支持从 Hell 生成的语句,似乎是为了强制执行某种 Systems Hungarian符号。
例如:
Option Explicit
DefBool B
DefLng I, L
Dim bSomething ' <~ that's a compile-time Boolean
Dim iGiveUp ' <~ that's a compile-time Long
Dim lNooooo ' <~ that's a compile-time Long also
Public Function IsUseful()
' function returns a compile-time Long
End Function
Public Property Get BasicStuff()
' yep, that's a compile-time Boolean
End Property
Def[Type]
语句是血腥的邪恶,并且愿意在现代代码中使用它们应该可以通过键盘获得 10K 伏特*。
DefBool
对于隐式类型 Boolean
DefCur
对于隐式类型 Currency
DefDbl
对于隐式类型 Double
DefInt
对于隐式类型 Integer
DefLng
对于隐式类型 Long
DefSng
对于隐式类型 Single
DefVar
对于隐式类型 Variant
Dim anything ' no "As [Type]" clause
Def[Type]
关键字可以在给定一系列适用的首字母前缀的情况下指定隐式编译时类型...
DefVar V
Dim vSomeVariant ' compile-time Variant (DefVar)
Dim foo ' also a compile-time Variant (implicit)
Dim bar As Variant ' also a compile-time Variant (explicit)
Dim vRedundant As Long ' compile-time Long ("As [type]" clause overrides DefVar)
DefVar
的单一合法用例。 .有吗?
最佳答案
Deftype 语句来自更旧版本的 BASIC。我记得至少在 QBasic 中,变量默认是浮点数,如果需要不同的变量,可以使用后缀。 (所以,X 本身就是一个数字,你可以用 X$ 代替字符串。)如果有人用整数做数学运算(就像人们经常做的那样),可以使用 DefInt A-Z
声明“默认”类型将是整数而不是浮点数,因此您不需要为所有变量添加后缀 %
表示整数。或者,您可能会为整数指定一部分起始字母,而为浮点指定其余部分,如果您从 FORTRAN 或其他使用具有不同类型的不同起始字母的约定的旧语言移植代码,这可能特别有用。
许多 Visual Basic 的设计都考虑到了能够直接使用 BASIC 早期版本中的代码片段而进行最小更改的用例,例如具有行号或使用“Let”来分配变量。我不是真正的历史学家,但我认为“系统匈牙利语”出现得较晚,特别是当人们习惯于使用超过一两个字母作为变量名时,因为计算机已经强大到足以处理这些事情。所以我有点不同意你的前提,因为我认为 Deftype 只是在 BASIC 中,因为以前的版本有它,而不是因为它旨在帮助强制执行特定的编码风格。
我猜想特别添加 DefVar 只是因为他们添加了 Variant 作为一种类型,而且看起来 Variant 应该像他们拥有的其他类型一样处理,尽管我觉得也许是程序员用语言实现它很有趣认为它和你现在一样没用。
显然,在 VB6 "new"时代创建的任何东西都不需要任何 Deftype,尤其是 DefVar,当然现在也不需要任何新东西。
要回答您的实际问题,我唯一能真正想到的是,它有助于明确表明您有意使用默认的无后缀和非显式类型变量应被视为变体。也许在您的应用程序的某些模块中,您使用了 DefInt A-Z
,以及在您使用的其他模块中 DefVar A-Z
,就像一个编码标准,以确保任何默认值都是明确的并且易于理解。这有点牵强,但我肯定听说过更奇怪的编码标准。
如果不出意外,如果使用一些外部工具来确保每个文件都以 Option Explicit
开头和 DefVar A-Z
也许还有一些其他标准(如 Option Base
),那么您不必担心开发人员引入其他 Deftype 命令并让他们的同事希望他们的键盘会触电他们。
关于vba - DefVar 是否有一个合法的用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49681307/
Def[Type] VBA 支持从 Hell 生成的语句,似乎是为了强制执行某种 Systems Hungarian符号。 例如: Option Explicit DefBool B DefLng I
Warning Tips - GNU Emacs Lisp Reference Manual 中的第一个提示: Try to avoid compiler warnings about undefin
所以,我从 setq and defvar in lisp , http://www.cs.ucf.edu/courses/cop4020/spr2006/plsetup.html , 和 In Li
我使用的代码是这样的: (defvar my-defvar "test") (completing-read "input: " '("1" "2" my-defvar)) 然后是M-x eval-r
我看到 Practical Common Lisp使用 (defvar *db* nil) 设置一个全局变量。为同样的目的使用 setq 不是可以吗? 使用 defvar 与 setq 有什么优点/缺
我找到了一个 Similar question . 但是我不太明白那个解释。 所以我尝试使用以下示例运行 clisp: [1]> (defvar a 5) A [2]> (+ a 1)
我找到了一个 Similar question . 但是我不太明白那个解释。 所以我尝试使用以下示例运行 clisp: [1]> (defvar a 5) A [2]> (+ a 1)
我有一个移动到行尾的函数,但是当已经在行尾时,返回到之前调用它的最后一点。 这需要将最后一个点的值存储在某处。目前我将这一点存储在例如 (defvar last-point 1) 中,但我认为封装会更
我的 .emacs 中有以下设置 ... (defvar org-dir "/home/mash/read/org/") 并在...周围使用它 (setq org-directory org-dir)
在一些文档中,我发现他们说答案是 *var* 表示全局变量。 但是当我尝试时,我无法确定这一点。 FIRST-PACKAGE[27]> (defvar b 1) B FIRST-PACKA
下面的 emacs lisp 文件是关于当 Alice 在她的 init 文件中使用词法绑定(bind)的局部变量 foo 并且 Bob 将 foo 定义为全局特殊变量时会发生什么defvar 在他的
下面的函数来自Org Mode - Organize Your Life In Plain Text!它在 emacs-23.4-r1 中不起作用。但是,如果我删除 bh/organization-t
我是一名优秀的程序员,十分优秀!