scala-Wert toInt ist kein Mitglied einer
Das println in der folgende code funktioniert (mit oder ohne toInt)
println("retweets : ", e.getOrElse("retweets", 0).toInt)
top10Tweets(""+e.get("text").get, e.getOrElse("retweets", 0).toInt)
Aber wenn ich übergeben Sie als argument einer Funktion (wie oben), funktioniert es nicht. Es sagt, "value toInt ist kein Mitglied einer"
Wenn ich entfernen toInt, es sagt,
type mismatch;
[error] found : Any
[error] required: Int
e ist eine Karte, wie folgt,
def tweetDetails(obj: twitter4j.Status) = {
Map(
"id" -> obj.getUser().getId(),
"screenName" -> obj.getUser().getScreenName(),
"text" -> obj.getText(),
"retweets" -> obj.getRetweetCount(),
"mentions" -> obj.getUserMentionEntities().length)
}
Unterschrift top10Tweets,
def top10Tweets(tweets: String, retweet_c: Int, mention_c: Int) = {
}
- Bitte geben Sie ein vollständiges Beispiel, vor allem die Art der
e
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Bearbeiten:
Ok, mit den neuen Informationen, die ich schlage vor, Sie erstellen ein Fall Klasse, dass mit den Daten, statt mit einem
Map
diese Weise, Sie zu bewahren, geben Sie Informationen. Ich weiß, es ist üblich, zu verwenden, hashes/maps für die, die in dynamisch typisierten Sprachen, aber in statisch typisierten Sprachen wie scala-Datentypen sind der bevorzugte Weg.orig:
Da ich weder weiß, was
e
ist, noch was in der Signaturtop10Tweets
hat, kann ich nur vermuten. Aber aus dem code und den Fehler ich gehe davon aus, dasse
ist einMap[String, String]
und Sie versuchen, um die string-Repräsentation einer Ganzzahl für die Schlüssel"retweets"
und konvertieren es in einInt
. Als default-Wert übergeben Sie eineInt
, so der Typ inferencer folgert TypAny
ist, weil das die meisten gemeinsamen super-TypString
undInt
. AllerdingsAny
keinentoInt
Methode und damit Sie den Fehler.Entweder übergeben Sie den Standardwert als
String
oder konvertieren Sie den Wert von"retweets"
zu einemInt
vor, wenn es existiert:Irgendwie ein wenig mehr Informationen würden helfen zu geben, eine genaue Antwort.
Ja, weil in der Karte ist "string" -> "string" und hast Du bei der getOrElse ( anderes ) string -> int, thats, warum seine keine.
funktioniert gut, oder Sie können:
toInt
ist überflüssig. Der zurückgegebene Wert ist bereits einInt
.Das gleiche problem, stört mich vor Sie überprüfen könnten, unter