如何创建可通过Bash命令行调用的Scala函数?附加法示例
创建可从Bash命令行调用的Scala函数(两数相加示例)
方法1:直接编写可执行Scala脚本
Scala支持直接运行脚本文件,无需提前编译,适合简单场景。
步骤1:编写脚本文件
创建名为add.scala的文件,内容如下:
// 校验参数数量 if (args.length != 2) { println("用法: scala add.scala <数字1> <数字2>") sys.exit(1) } // 定义相加函数 def add(a: Int, b: Int): Int = a + b // 解析参数并执行计算 val num1 = args(0).toInt val num2 = args(1).toInt val result = add(num1, num2) println(s"计算结果: $result")
步骤2:设置直接执行权限(可选)
如果想跳过scala命令前缀,直接运行脚本,需给文件添加执行权限,并在头部加Shebang行:
chmod +x add.scala
修改后的add.scala:
#!/usr/bin/env scala if (args.length != 2) { println("用法: ./add.scala <数字1> <数字2>") sys.exit(1) } def add(a: Int, b: Int): Int = a + b val num1 = args(0).toInt val num2 = args(1).toInt val result = add(num1, num2) println(s"计算结果: $result")
步骤3:从Bash调用脚本
两种调用方式:
- 通过
scala命令运行:
scala add.scala 3 5
输出:计算结果: 8
- 直接执行脚本(已加权限和Shebang):
./add.scala 3 5
输出同样为计算结果: 8
方法2:编译为JAR包调用
适合复杂逻辑或需要复用函数的场景,编译后可通过JAR包执行。
步骤1:编写带主类的Scala文件
创建Add.scala:
object Add { // 定义相加函数 def add(a: Int, b: Int): Int = a + b // 主方法处理命令行参数 def main(args: Array[String]): Unit = { if (args.length != 2) { println("用法: scala Add <数字1> <数字2> 或 java -jar add.jar <数字1> <数字2>") sys.exit(1) } val num1 = args(0).toInt val num2 = args(1).toInt println(s"计算结果: ${add(num1, num2)}") } }
步骤2:编译并打包为JAR
# 编译Scala文件 scalac Add.scala # 打包成可执行JAR(指定主类为Add) jar cvfe add.jar Add *.class
步骤3:调用JAR包
# 用scala命令运行 scala -jar add.jar 4 6 # 或用java命令(需确保Scala库在classpath中) java -jar add.jar 4 6
输出:计算结果: 10
优化建议
- 增加异常处理,避免用户输入非数字导致崩溃:
try { val num1 = args(0).toInt val num2 = args(1).toInt val result = add(num1, num2) println(s"计算结果: $result") } catch { case e: NumberFormatException => println("错误:请输入有效的整数") sys.exit(1) }
- Windows系统无需设置Shebang,直接用
scala add.scala命令运行即可。
内容的提问来源于stack exchange,提问作者Hanuman95
相关产品推荐
相关产品推荐

