gpt4 book ai didi

scala - 创建未命名提取函数的惯用 scala 方法

转载 作者:行者123 更新时间:2023-12-04 06:05:24 24 4
gpt4 key购买 nike

假设有一个函数foo[A, B, C]( func: (a: A, b: B, c: C) => B) 我想传入这个函数 def secondOfThree[A, B, C](a: A, b: B, c: C): B = b

我可以用 foo(secondOfThree) 调用 foo 这很丑,但工作正常..但是,我希望能够调用 foofoo(case (_, b, _) => b) 类似,但这不起作用。

那么创建简单的未命名提取函数的干净惯用的 Scala 方法是什么?

最佳答案

您不需要 case 关键字,但 Scala 确实需要知道类型:

scala> def foo[A, B, C](func: (A, B, C) => B) = ...
foo: [A, B, C](func: (A, B, C) => B)Nothing

scala> foo[Symbol, Int, Char]((_, b, _) => b)

如果 foo 已知类型,则调用不需要指定它们:

scala> def foo(func: (Symbol, Int, Char) => Int) = func('a, 2, 'c') + 5
foo: (func: (Symbol, Int, Char) => Int)Int

scala> foo((_, b, _) => b)
res3: Int = 7

关于scala - 创建未命名提取函数的惯用 scala 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9525766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com