【问题标题】:Function to return the same output for any input in Scala为Scala中的任何输入返回相同输出的函数
【发布时间】:2016-01-05 06:59:06
【问题描述】:

假设我有一个这样的函数类型Foo

type Foo = (Int, Int, Int) => String

现在我想定义一个Foo 类型的变量,以始终为任何参数返回"abc"

val foo: Foo = (_, _, _) => "abc"

可以简化吗?

【问题讨论】:

  • 除了这个问题,你还想做什么?为任何给定的输入返回 abc 听起来很奇怪。
  • 这是一个人为的例子。我正在为测试做一个模拟。

标签: scala function


【解决方案1】:

实际上并不是长度上的简化(一个字符更长),而是一种简化方式,您不需要编写尽可能多的占位符,只要您的参数列表是:

val foo: Foo = { case _ => "abc" }

【讨论】:

  • 谢谢。我的意思是占位符的数量。
  • @Michael 使用这种方法,您可能拥有 type Foo2 = (Int, Int) => String 并且仍然使用相同的函数定义:val foo: Foo2 = { case _ => "abc" }
  • 谢谢,我明白了。不确定我是否使用您的解决方案,但它看起来像真正的简化。特别是如果我有五个参数的函数。
【解决方案2】:
scala> def f[A](x: A*): String = "Foo"
f: [A](x: A*)String

scala> f( 1, 2, 3)
res3: String = Foo

scala> f( List(1), 5)
res4: String = Foo

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多