2013-07-16 6 views
7

のメンバーではないスカラ値オーバーライド:次のコード内のprintlnは(オーバーライド:</strong>または<strong>なし)動作任意

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

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

しかし、私は(上記のように)関数の引数として渡し、それは動作しません。それは、top10Tweetsの署名

def tweetDetails(obj: twitter4j.Status) = { 
    Map(
    "id" -> obj.getUser().getId(), 
    "screenName" -> obj.getUser().getScreenName(), 
    "text" -> obj.getText(), 
    "retweets" -> obj.getRetweetCount(), 
    "mentions" -> obj.getUserMentionEntities().length) 
    } 

、次のようにeは、地図で

私はオーバーライド:を削除し、それが言う、

type mismatch; 
[error] found : Any 
[error] required: Int 

"値のオーバーライド:は任意のメンバーではありません" と言います

def top10Tweets(tweets: String, retweet_c: Int, mention_c: Int) = { 
} 
+0

完全な例、e' 'の特に種類を提供してください。 – Beryllium

答えて

6

編集

新しい情報では、Mapを使用する代わりにデータを保持するケースクラスを作成することをお勧めします。これにより、タイプ情報を保持します。動的に型指定された言語ではハッシュ/マップを使用するのが一般的ですが、静的に型指定された言語ではスカラーのデータ型が優先されるため、一般的です。

ORIG

私はeが何であるかを知らないどちらとして、またどのような署名top10Tweets持って、私は仮定することができます。しかし、あなたのコードとエラーから私はがMap[String, String]であるとし、"retweets"の整数の文字列表現を取得しようとしており、それをIntに変換しようとしています。既定値としてIntに渡すので、型推論器はAnyを推論します。これはStringIntの最も一般的なスーパータイプであるためです。しかし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としてデフォルト値を渡す、または前Int"retweets"の値を変換:

e.get("retweets").map(_.toInt).getOrElse(0) 

をとにかくもう少し情報が正確な答えを与えるために役立つだろう。

+0

ありがとうございます。 map(_。toInt).getOrElse(0)、しかし、まだ私は "toIntはAnyのメンバーではありません"という値を得ています。文字列、任意)?私は関連するコードで質問を更新しました。 – user644745

+0

こんにちはドレキシン、ありがとう。 Mapの代わりに "case class"を使用する方法の例を教えてください。 – user644745

+0

これはかなり基本的なものなので、基本を学ぶためにスカラに関する良い本を読むことをお勧めします。Martin Odersky(scalaの作成者)によるScalaのプレグラム作成は、オンラインで自由に利用できます。 – drexin

2

はい、Mapは "string" - > "string"であり、getOrElse(else)string - > intのときはそうです。

Map("x" -> 2).getOrElse("x", 4).toInt 

正常に動作しますか次のことができます。

Map("x" -> "2").getOrElse("x", "4").toInt 
+0

最初の例では、 'toInt'は余計です。返される値は既に 'Int'です。 –

関連する問題