Ada*_*cre 3 string forth string-comparison
我可以在一个if语句中执行此操作,还是应该创建一个帮助器布尔变量?这是我到目前为止的代码.顺便说一下,IOX@是从用户那里获得输入.
: var
compile: VARIABLE
complile: ;
: lock
compile: var realPass$
compile: realPass$ "password" !
compile: ." Enter Password: "
compile: var pass$
compile: IOX@ pass$ !
compile: var match
compile: realPass$=pass$ match ! Unknown token: realPass$=pass$
Run Code Online (Sandbox Code Playgroud)
用于比较字符串的ANS FORTH字是COMPARE (c-addr_1 u_1 c-addr_2 u_2 -- n).在FORTH中,使用s"单词创建字符串,字符串由内存地址和长度组成.这意味着当您比较字符串时,您将提供COMPARE两个字符串的内存地址和长度.
结果COMPARE如下:0如果两个字符串相等,则-1小于,1大于.这与提供比较器或比较运算符的其他语言相同.注意,在FORTH true中-1,所以检查二进制返回没有任何价值compare.
通常Forth避开使用堆栈的显式变量,因此IF直接使用它而没有额外的变量就可以了.
: PWCHECK
COMPARE
IF ." Entry denied."
ELSE ." Welcome friend." THEN
CR
;
S" Hello" ok
S" Goodbye" ok
PWCHECK You are not wanted here. ok
S" Howdy" ok
S" Howdy" ok
PWCHECK Welcome friend. ok
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
953 次 |
| 最近记录: |