相关疑难解决方法(0)

如何在scala中编写一个正确的null安全合并运算符?

看到像这样一个涉及恐怖的问题的答案显示就像试图抓住NPE并从堆栈轨迹中挖掘出受损的名称,我问这个问题所以我可以回答它.

欢迎评论或进一步改进.

scala coalescing

23
推荐指数
1
解决办法
4430
查看次数

如何开发宏来短路零?

在斯卡拉,如果我有

hub = myBicycle.getFrontWheel.getHub()
Run Code Online (Sandbox Code Playgroud)

并且可能前轮缺失,即myBicycle.getFrontWheel() == null,我只想在这种情况下hub被分配null,表达这种情况最简洁的方式是什么?

我现在不得不这样做

hub = if (myBicycle.getFrontWheel() == null) null else myBicycle.getFrontWheel.getHub()
Run Code Online (Sandbox Code Playgroud)

当访问者链更长时,它会变得更糟.

不熟悉Scala宏,我想知道是否有可能编写一个Scala宏以某种方式捕获方法名称并仅在对象引用为非null时才应用它?

macros scala

4
推荐指数
1
解决办法
717
查看次数

Groovy语言有?处理NullPointer异常的语法,scala中有类似的东西吗?

假设我有来自查询字符串请求参数的String参数.如您所知,参数可能丢失或可能存在,但值为空字符串.在groovy语言中,我可以简单地做一些事情

  List lst = words?.split(',') 
Run Code Online (Sandbox Code Playgroud)

如果单词为null,则lst将为null而不是抛出NPE

scala中的类似快捷方式是什么?

Option [String]在这里不是一个选项,因为它是来自查询字符串的单词是String类型.

java groovy scala

2
推荐指数
2
解决办法
1282
查看次数

可以使用Scala的Option flatMap方法更简洁吗?

我无疑是Scala的新手,我在许多Scala示例中遇到的语法糖问题.它通常会产生一个非常简洁的陈述,但老实说到目前为止(对我而言)有点难以理解.

因此,我希望将Option类(安全解除引用)的典型用法作为开始理解的好地方,例如,在我看到的特定示例中使用下划线.

我发现了一篇非常好的文章,展示了使用Option来避免null的情况.

https://medium.com/@sinisalouc/demystifying-the-monad-in-scala-cc716bb6f534#.fhrljf7nl

他描述了一个用途:

trait User {
  val child: Option[User]
}
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您也可以将这些函数编写为就地lambda函数,而不是先验地定义它们.然后代码变为:

val result = UserService.loadUser("mike")
  .flatMap(user => user.child)
  .flatMap(user => user.child)
Run Code Online (Sandbox Code Playgroud)

那看起来很棒!也许不像人们在groovy中那样简洁,但也不错.

所以我想我会尝试将它应用到我想要解决的案例中.

我有一种类型Person,其中a的存在Person是可选的,但如果我们有一个人,他的属性是有保证的.出于这个原因,没有使用的Option的内型Person类型本身.

的Person具有PID它的类型的Id.该Id类型包括两种String类型; Id-Type和Id-Value.

我使用Scala控制台测试以下内容:

class Id(val idCode : String, val idVal : String)

class Person(val pid : Id, val name : String)

val anId: Id = new Id("Passport_number", "12345")

val person: Person = new Person(anId, "Sean")

val operson : …
Run Code Online (Sandbox Code Playgroud)

scala optional flatmap

2
推荐指数
2
解决办法
891
查看次数

标签 统计

scala ×4

coalescing ×1

flatmap ×1

groovy ×1

java ×1

macros ×1

optional ×1