令人尴尬的基本 - 将Class中的字段初始化为null - Scala

 齐cC含低 发布于 2023-02-09 20:37

试图拿起Scala,我正在转换一个小型Java项目.

我有这样的bean类.目标是有两个字段,getter和setter与它一起使用.对于Numbers或者String,我知道我们可以用'0'或空字符串初始化它.但是,对于类,我不知道用什么来初始化它.据我所知,nullScala对此不以为然.

class CoreSearchPageResultS extends Serializable {

  var wikiHits: SearchResult[WikiSearchHit]=null
  var webHits: SearchResult[WebSearchHit]=null


}

相反,我应该像这样初始化它吗?

var wikiHits: SearchResult[WikiSearchHit]=new SearchResult[WikiSearchHit]();
var webHits: SearchResult[WebSearchHit]=new SearchResult[WebSearchHit]();

我理解这意味着在构造函数完成时,构造对象是不必要的.

我尝试了以下代替但是我收到了编译错误.

private var _wikiHits: SearchResult[WikiSearchHit]

def wikiHits:SearchResult[WikiSearchHit]=_wikiHits
def wikiHits_(wikiHits:SearchResult[WikiSearchHit])=_wikiHits=wikiHits

错误:

*类CoreSearchPageResultS需要是抽象的,因为未定义变量_wikiHits [ERROR](注意变量需要初始化才能定义)*

我知道我正在做一些非常愚蠢和令人尴尬的事情.请帮忙.

1 个回答
  • 据我所知,nullScala对此不以为然.

    确实.null实际上只存在与Java的互操作性; 不要将它用于本机Scala代码.

    使用Option代替的事物,可选地具有价值.Option有两个具体的子类,SomeNone.例如:

    var wikiHits: Option[SearchResult[WikiSearchHit]] = None
    

    稍后的:

    wikiHits = Some(getSearchResult())
    

    然后,您可以进行模式匹配,或使用for理解,或使用其他方法Option:

    wikiHits match {
      case Some(result) => println("Result: " + result)
      case None => println("No result!")
    }
    

    2023-02-09 20:39 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有