勇芳软件 发表于 2020-1-18 17:47:30

【VFB】VisualFreeBasic:VisualBasic6望尘莫及之短路逻辑

VisualBasic6:微软出品、简单易用,虽然几十年前的,依旧生命顽强,以下简称:VB6

VisualFreeBasic:集合VB6的易用和采用c语言的优点及编程底层操作,VB6高手的进阶语言,以下简称:VFB

有种逻辑操作符叫:短路。顾名思义就是路径比较短,那换成代码执行就更高效率了。这是VB6不存在的。

正常逻辑是:And、Or
短路逻辑是:AndAlso、OrElse

本来VFB比VB6代码执行效率高很多,有了这个更能加速。例题:'平常写法
If 表达式a And 表达式b Then ok
'短路逻辑
If 表达式a AndAlso 表达式b Then ok看上去一样,但实际上是不一样的,等效下面的语句If 表达式a Then
        If 表达式b Thenok
End If平常写法的特性:表达式a 和 表达式b 必须都要在计算得出结果后再进行And方式的逻辑比较,才能判断出条件是否成立。
短路写法的特性:表达式a 如果不成立,那么 表达式b 就不需要再进行计算了——已经足以判断出条件不成立了。而如果 表达式a 成立,则依然要计算 表达式b 的结果。

最有说明的应用就是数组,判断是不是发生越界访问了:If UBound(BB) >= 5 AndAlso BB(5) > 0 Then平常写法会因为数组太少而发生代码出错,短路写法则不会发生这问题。

上述例子用的是逻辑与的短路写法“AndAlso”,下面我们来介绍逻辑或的短路写法“OrElse”

平常写法的特性:所有表达式必须都要在计算得出结果后再进行Or方式的逻辑比较,才能判断出条件是否成立。If 表达式a Or 表达式b Or 表达式c Then ok短路写法的特性:先计算 表达式a 的结果,成立就直接OK,不成立则按顺序接着计算 表达式b ,如果成立则同样OK;表达式a 和 表达式b 如果都不成立,则计算 表达式c ,如果成立则OK,否则进入Else块或者结束。If 表达式a OrElse 表达式b OrElse 表达式c Then ok以上只是冰山一角,更多发现,期待你自己使用VFB。

重新排版by @0xAA55

smitest 发表于 2020-3-17 20:20:11

对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给初学者用的,它真的配不上。

0xAA55 发表于 2020-1-19 20:47:32

这个AndAlso其实就是C语言的 && ,OrElse则是C语言的 || 。其实可以不必出现在Basic系语法里,因为编译器可以做到识别你的需求,然后避免进行后续的判断。

反过来,多了这个AndAlso、OrElse会让Basic语言变得啰嗦。这些地方,C语言使用运算符比较方便,比如 & 和 && 、| 和 ||的对比。但Basic大可不必走这一套。

不应该“你有我有”,要发挥各个语言各自的长处。就这一点,我更喜欢原生的VB6的语法,而不太喜欢VFB的语法。我感觉那还不如我写C呢。

勇芳软件 发表于 2020-1-20 17:46:27

0xAA55 发表于 2020-1-19 20:47
这个AndAlso其实就是C语言的 && ,OrElse则是C语言的 || 。其实可以不必出现在Basic系语法里,因为编译器可 ...

凭什么 C语言里有就不叫啰嗦, B语言里有就叫啰嗦, C语言里的好处,B语言学习来用,有错吗?
有好东西我们要学来用,而不是放弃自己去用别的。

0xAA55 发表于 2020-1-21 14:28:15

勇芳软件 发表于 2020-1-20 17:46
凭什么 C语言里有就不叫啰嗦, B语言里有就叫啰嗦, C语言里的好处,B语言学习来用,有错吗?
有好东西我 ...

1、我没说要放弃自己去用别的。Basic系可以做到让编译器自动识别逻辑与或非是按位还是按逻辑的,并且也可以在需要按逻辑处理的时候应用短路逻辑。

2、在C语言里面可以直接用符号表示的,在Basic里非要用单词表示,这不是啰嗦是什么?

勇芳软件 发表于 2020-3-19 22:06:14

smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

【BASIC是给初学者用的】这句我不认同,我认为是易用,而非初级。应该是容易学习,适合人类思维(相对于C语言)C语言是纯粹为编程而生的语言,处处为电脑内部原理考虑,因此对初学来说就是个天书,B语言是人性化多了,处处为人考虑。 以前 VB 比较弱,给人带来了初级的印象,而 FB 就不同。

Ayala 发表于 2020-3-19 22:27:20

勇芳软件 发表于 2020-3-19 22:06
【BASIC是给初学者用的】这句我不认同,我认为是易用,而非初级。应该是容易学习,适合人类思维(相对于C ...

Basic偏向数学逻辑,c语言偏向程序逻辑

Ayala 发表于 2020-3-19 22:28:41

smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

basic作为快速开发和数学演示上还是很人性化的。

WeaponJang 发表于 2021-5-26 12:14:35

Ayala 发表于 2020-3-19 22:28
basic作为快速开发和数学演示上还是很人性化的。

basic人话更多,阅读方便,编写麻烦.

系统消息 发表于 2021-5-31 10:52:07

smitest 发表于 2020-3-17 20:20
对于FreeBasic感觉还行,但名字取的真不厚道,明明就是有着BASIC关键字的C语言。叫B语言还凑合,BASIC是给 ...

AndAlso和OrElse最初就是巨硬发明的,是VB.NET语法,FB只不过跟着它学而已。

xiawan 发表于 2022-5-17 10:23:09


你们懂的,楼主好人
页: [1]
查看完整版本: 【VFB】VisualFreeBasic:VisualBasic6望尘莫及之短路逻辑