我使用的是IntelliJ IDEA 2022.2.2 (Community,Build #IC-222.4167.29)和Scala插件2022.2.677。我希望scala语句具有以下样式:
class test {
def ifelse(i: Int): String =
if i == 1 then "one"
else if i == 2 then "two"
else if i == 3 then "three"
else "many"
}
但ID
我正在处理IntelliJ中的一个scala项目,想要清理一下我的代码。为此,我正在寻找一种方法,可以在我的项目中获得未使用的方法列表。
这个链接没有回答我的问题。它是针对Java的,不是针对Scala的。
Analyze -> Inspect Code for Scala in IntelliJ有一个选择未使用符号的选项,但我无法深入到只检查方法。
我有以下Scala代码:
// RunMode.scala
object RunMode extends Enumeration {
val CLIENT_MODE = Value("CLIENT")
val SERVER_MODE = Value("SERVER")
}
// Driver.scala
object MyApp extends App {
// Don't worry about this too much, the point is we get a valid
// instance of RunMode to w
在我与一位朋友在代码评审期间进行的友好交谈中,我们注意到代码中有很多:
unknownTypeVal match {
case asStr: String => //DO SOMETHING FOR STRING
case asInt: Integer => //DO SOMETHING FOR Integer
case asMyOwnClass: MyOwnClass => //DO SOMETHING FOR MyOwnClass
}
最初由返回Any或Option的方法产生的问题,没有办法删除它,因为我们使用库作为XPath和JSONPath,它
假设我在Scala.js中有一个函数的返回类型的定义:
@native
trait Link extends Object {
val href: String = native
val title: String = native
}
在Scala代码中,定义符合这一点的对象文字的最好方法是什么?我认为use(...).as[...]的技巧会奏效:
val link = js.use(new {
val href = "value1"
val title = "value2"
}).as[Link]
但这会产生错误:
AnyRef{val :
我已经将连接器从1.5.9升级到1.6.0,并且由于超时异常,我在连接到DB时开始失败。
我在HikariCP 2.5.1和slick3.2.0中使用它。如果我再次回滚到MariaDB连接器1.5.9,它成功地连接,如果我试图直接升级到2.0.1,它会失败,同样的错误。
问题是,基于,我们不应该尝试任何突破性的改变。但是根据的说法,它可能比changelog :/
本地DB的例外情况:
java.sql.SQLTransientConnectionException: xxx.db - Connection is not available, request timed out after 5
在成功匹配父类之后,是否可以让Scala在类层次结构中保持模式匹配?例如,我期望下面的代码打印1和2,但是在将S与T进行匹配之后,Scala不会继续匹配下一个案例,因此永远不会到达下一个案例。
class T
class S extends T
new S match {
case _: T => println(1)
case _: S => println(2)
}
最近,我注意到方差注释可以在类型别名中使用。下面是来自Predef的示例
type Function[-A, +B] = Function1[A, B]
我开始思考,它可以用在哪里。显然,您不能将方差更改为相反,也不能使不变类型表现为协变或逆变。编译器将抛出一个错误,如下所示
scala> type BrokenFunc[+T, -R] = Function1[T, R]
<console>:7: error: covariant type T occurs in contravariant position in type
[+T, -R]T => R of t
从Scala2.13开始,不推荐使用早期的初始化器。 我如何创建一个值来传递给一个超类,这个超类应该是计算的(基于其他构造函数参数)并且是完全私有的,所以在类初始化时它不能被传递? 到目前为止,我所做的一个例子是: abstract class JmsServiceInitialiser(val qConfig: Config)
class ActiveMQService(
val configA: ConfigElement,
val configB: ConfigElement
) extends {
val config: Config = {
println(c
在Scala中,我有一个注解和一个带有注解的基本特征,但是扩展该类并不继承注解:
scala> import scala.annotation.StaticAnnotation
import scala.annotation.StaticAnnotation
scala> case class AnnotationClass() extends StaticAnnotation
defined class AnnotationClass
scala> @AnnotationClass trait BaseTrait
defined trait BaseTrait
sca
我尝试在一个简单的示例中链接到本地BLAS库,以测试与“常规”实现的性能差异。
我尽职尽责地遵循了官方netlib-java GitHub上发布的说明,但仍然得到一个类似于的错误。
我使用Hadoop2.7运行预编译的Spark2.3;我尝试从源代码构建Spark,并选择显式启用netlib-java (如中所述,但无济于事。
让我感到困惑的具体错误消息如下:
spark-shell --packages com.github.fommil.netlib:all:1.1.2
Ivy Default Cache set to: /home/user/.ivy2/cache
The jar
我正在使用Scala2.11.0
我注意到StringBuilder是在scala.collection.mutable.StringBuilder和java.lang.StringBuilder中定义的。我还注意到scala隐式导入java.lang.,scala.,scala.Predef._
为什么我在写作时使用scala.collection.mutable.StringBuilder而不是java.lang.StringBuilder
val def = new StringBuilder
谢谢
编辑:此问题似乎已在Scala2.9.1中得到解决
考虑到以下现有Java库(简化):
public interface IFace<T> {}
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
public @interface Anno {
Class<? extends IFace> value();
}
库中有一些方法,这些方法期望用户定义的界面包含一个或多个带有@Anno注释的方法。
我正在探索将现有代码从Java转换为Scala。现有的代码库包含IFace的实现。
p
如何显式地将某个类型的元组设置为None?
scala> var c = Some(1,1)
c: Some[(Int, Int)] = Some((1,1))
scala> c = None
<console>:11: error: type mismatch;
found : None.type
required: Some[(Int, Int)]
c = None
^
scala> None()
<console>:11: error: None.type does not take paramet