You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建可通过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调用脚本

两种调用方式:

  1. 通过scala命令运行:
scala add.scala 3 5

输出:计算结果: 8

  1. 直接执行脚本(已加权限和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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 17:43:15