gpt4 book ai didi

scala 新手在使用 Option 时遇到问题,三元运算符的等价物是什么

转载 作者:行者123 更新时间:2023-12-04 17:11:47 27 4
gpt4 key购买 nike

我已经读过 Scala 中的 if 语句总是返回一个表达式

所以我正在尝试执行以下操作(伪代码)

sql = "select * from xx" + iif(order.isDefined, "order by " order.get, "")

我正在尝试
val sql: String = "select * from xx" + if (order.isDefined) {" order by " + order.get} else {""} 

但我收到此错误:
illegal start of simple expression

订单是一个选项[字符串]

我只想有一个方法的可选参数,如果没有传递该参数(在本例中的顺序),则跳过它

实现我想要做的事情的最惯用的方法是什么?

- 编辑 -

我想我太急于问了

我找到了这个方法
val orderBy = order.map( " order by " + _ ).getOrElse("")

这是正确的方法吗?

我以为 map 是用于其他目的...

最佳答案

首先你没有使用 Option[T]习惯上,试试这个:

"select * from xx" + order.map(" order by " + _).getOrElse("")

或使用不同的语法:
"select * from xx" + (order map {" order by " + _} getOrElse "")

这大致相当于:
"select * from xx" + order match {
case Some(o) => " order by " + o
case None => ""
}

看看 scala.Option Cheat Sheet .但如果你真的想走 if 的丑陋之路s(在 if 周围缺少括号):
"select * from xx" + (if(order.isDefined) {" order by " + order.get} else {""})

关于scala 新手在使用 Option 时遇到问题,三元运算符的等价物是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9968611/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com