2017-03-02 8 views
0

私はスカラ座で初心者と私はそれについて学んでいるこの瞬間よ...私は、コードをテストしていると私はリストを持っている[任意]このように:Scala List [Any]には、関数としての要素があります。戻り値を取得する方法?

var list: List[Any] = List(
    "a string", 
    732, // an integer 
    'c', // a character 
    true, // a boolean value 
    (x: String) => "String return " + x) 

私は戻り値を取得したいですインデックス4の、しかし私はエラーを取得します。私は戻り値を得る方法を知らない。それは疑いである。

var test = list(4); 
test("hello") // Error 
+1

エラーは何ですか?それはかなり重要です。 – Carcigenicate

+1

関数を関数としてキャストする必要があるかもしれません。なぜなら、コンパイラに関する限り、 'test'は' Any'型の場合です。これは呼び出し可能であることを保証できません。 – Carcigenicate

答えて

1

は、あなたはそれを呼び出す前String => StringAnyから機能をキャストする必要があります。

var test = list(4) 

test.asInstanceOf[String => String]("hello") 
// res21: String = String return hello 

または:

val test = list(4).asInstanceOf[String => String] 
// test: String => String = <function1> 

test("hello") 
// res23: String = String return hello 
0

あなたがそうのようにそれを呼び出すことができます。

scala> val f = (x: String) => "String return " + x 
f: String => String = <function1> 
scala> val y = f.asInstanceOf[ String => String ].apply("x") 
y: String = String return x 
scala> val y = f.asInstanceOf[ String => String ]("x") 
y: String = String return x 
関連する問題