【问题标题】:Scala List[Any] has a element as function. How to get return value?Scala List[Any] 有一个元素作为函数。如何获得返回值?
【发布时间】:2017-07-22 13:33:19
【问题描述】:

我是 Scala 的新手,此刻我正在学习它...我正在测试代码,我有一个这样的列表[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

【问题讨论】:

  • 错误是什么?这很重要。
  • 您可能需要将函数转换为函数,因为就编译器而言,test 是如果类型为Any,它不能保证是可调用的。

标签: scala list function


【解决方案1】:

在调用它之前,您需要将函数从 Any 转换为 String => String

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

【讨论】:

    【解决方案2】:

    你可以这样称呼它:

    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
    

    【讨论】:

      猜你喜欢
      • 2010-09-08
      • 2014-01-28
      • 2020-07-19
      • 1970-01-01
      • 2020-07-19
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      相关资源
      最近更新 更多