五分钟做一个Nim控制台程序

灵感来自邱璇洛

简介

我们将会使用Nim实现一个简单的波兰表达式的终端计算器 甚至只支持浮点数

开始

在Nim中,获取控制台输入内容是十分容易的一件事情,控制台输入的内容在Nim中可以使用os标准库的paramStr(index)过程获取。

nim c -r compute.nim + 1.0 2.0

在上面的控制台里我们一共输入了三个内容+1.02.0,在Nim里,控制台传入的数据都是字符串。
我们可以在compute.nim中获取他们

import os
echo paramStr(1) # +
echo paramStr(2) # 1.0
echo paramStr(3) # 2.0

剩下的就简单了,只需要写一个简单的波兰表达式的计算函数

proc calculate(symbol: string, a: float, b: float): float=
    if symbol == "+":
        return a + b
    elif symbol == "-":
        return a - b
    elif symbol == "*":
        return a * b
    elif symbol == "/":
        return a / b
    else:
        # 错误处理
        raise newException(OSError, "错误:未知符号类型")

解析控制台的命令

let ShellSymbol = paramStr(1)
# 抓换类型
var ShellA: float
discard parseFloat(paramStr(2), ShellA)
var ShellB: float
discard parseFloat(paramStr(3), ShellB)

最后输出结果

stdout.write calculate(ShellSymbol, ShellA, ShellB)

完整代码

import os
import parseutils

proc calculate(symbol: string, a: float, b: float): float=
    if symbol == "+":
        return a + b
    elif symbol == "-":
        return a - b
    elif symbol == "*":
        return a * b
    elif symbol == "/":
        return a / b
    else:
        raise newException(OSError, "错误:未知符号类型")

let ShellSymbol = paramStr(1)
var ShellA: float
discard parseFloat(paramStr(2), ShellA)
var ShellB: float
discard parseFloat(paramStr(3), ShellB)
stdout.write calculate(ShellSymbol, ShellA, ShellB)
96 views
Comments
登录后评论
Sign In
·

代码高亮太难了,呜呜呜,找了一堆不同语言渲染差不多的效果

·

源代码文件:Bitbucket