脚本 – 模式匹配args并在轻量级Scala脚本中提供错误消息
发布时间:2020-12-16 09:56:18 所属栏目:安全 来源:网络整理
导读:我编写了许多简单的 scala脚本,最终以args上的简单模式匹配开始: val Array(path,foo,whatever) = args// .. rest of the script uses "path","foo",etc. 当然,如果我提供了错误数量的参数,我会得到一个难以理解的错误: scala.MatchError: [Ljava.lang.Str
我编写了许多简单的
scala脚本,最终以args上的简单模式匹配开始:
val Array(path,foo,whatever) = args // .. rest of the script uses "path","foo",etc. 当然,如果我提供了错误数量的参数,我会得到一个难以理解的错误: scala.MatchError: [Ljava.lang.String;@7786df0f at Main$$anon$1.<init>(FollowUsers.scala:5) ... 是否有一种简单的方法可以提供更有用的错误消息?我目前的解决方法是执行以下操作: args match { case Array(path,whatever) => someFunction(path,whatever) case _ => System.err.println("usage: path foo whatever") } def someFunction(path: String,foo: String,whatever: String) = { // .. rest of the script uses "path",etc. } 但是,由于必须定义一个完整的其他功能,并且必须在很多地方重复“路径”,“foo”和“无论什么”,这感觉就像很多样板.有没有更好的办法?我想我可能会丢失函数并将正文放入匹配语句中,但这对我来说似乎不太可读. 我知道我可以使用众多命令行参数解析包中的一个,但我真的在寻找一些非常轻量级的东西,我不需要添加依赖项并修改我的类路径. 解决方法
怎么样?
val Array(path,whatever) = if (args.length == 3) args else throw new Exception("usage:path foo whatever") == ==编辑 基于兰德尔的评论: require(args.length == 3,"usage: path foo whatever") val Array(path,whatever) = args 这是最小的样板.你的val在范围内,你不必处理右括号,你得到使用错误信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |