gpt4 book ai didi

scala 值 toInt 不是 Any 的成员

转载 作者:行者123 更新时间:2023-12-03 21:19:25 25 4
gpt4 key购买 nike

以下代码中的 println 有效(有或没有 toInt )

println("retweets : ", e.getOrElse("retweets", 0).toInt)

top10Tweets(""+e.get("text").get, e.getOrElse("retweets", 0).toInt)

但是当我将它作为函数的参数传递时(如上),它不起作用。它说“值 toInt 不是 Any 的成员”

当我删除 toInt 时,它说,
    type mismatch;
[error] found : Any
[error] required: Int

e 是一个 Map,如下所示,
  def tweetDetails(obj: twitter4j.Status) = {
Map(
"id" -> obj.getUser().getId(),
"screenName" -> obj.getUser().getScreenName(),
"text" -> obj.getText(),
"retweets" -> obj.getRetweetCount(),
"mentions" -> obj.getUserMentionEntities().length)
}

前10条推文的签名,
def top10Tweets(tweets: String, retweet_c: Int, mention_c: Int) = {
}

最佳答案

编辑 :

好的,有了新信息,我建议您创建一个保存数据的案例类,而不是使用 Map ,这样您将保留类型信息。我知道在动态类型语言中使用哈希/映射是很常见的,但在静态类型语言中,scala 数据类型是首选方式。

:

因为我不知道是什么 e是,也没有什么签名top10Tweets有,我只能假设。但是根据您的代码和错误,我假设 eMap[String, String]并且您正在尝试获取键 "retweets" 的整数的字符串表示形式并将其转换为 Int .作为默认值,您传入 Int ,所以类型推断器推断类型 Any ,因为那是String最常见的父类(super class)型和 Int .然而Any没有 toInt方法,因此你会得到错误。

Map("x" -> "2").getOrElse("x", 4).toInt
<console>:8: error: value toInt is not a member of Any
Map("x" -> "2").getOrElse("x", 4).toInt

将默认值作为 String 传递, 或转换 "retweets" 的值到 Int之前,如果它存在:
e.get("retweets").map(_.toInt).getOrElse(0)

无论如何,多一点信息将有助于给出准确的答案。

关于scala 值 toInt 不是 Any 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17673958/

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