【问题标题】:Suggest a way to lift these functions提出一种提升这些功能的方法
【发布时间】:2013-06-25 15:37:18
【问题描述】:

您能否提出一种提升这两个功能的方法?谢谢!

def maxY(f: (Int, Int) => Int, z: Int) = (0 to z).filter(f(0, _) <= z).max
def maxX(f: (Int, Int) => Int, z: Int) = (0 to z).filter(f(_, 0) <= z).max

【问题讨论】:

  • “提升”?这意味着什么?什么语言?你的问题我很难理解。
  • @duffymo 语言在标签 (scala) 中,lifting 是计算机科学术语
  • 谢谢,我很欣赏这两个方面的教育。我不知道。
  • 您能否详细说明您的用例?你的意思是手动还是创建一些东西会自动给定任意((Int, Int) =&gt; Int =&gt; Int) =&gt; Int
  • 不明白这个问题。你能指定你想要的结果的类型签名吗?

标签: scala


【解决方案1】:

您可以将函数转换为部分应用函数,然后使用元组代替参数列表:

def maxWithTuple(buildTuple: Int => (Int, Int), f: (Int, Int) => Int, z: Int) = 
  (0 to z).filter(i => (f _).tupled(buildTuple(i)) <= z).max

确定这不是您正在寻找的解决方案,但演示了如何分离参数的构建和函数的调用。

buildTuple 是构造用作参数列表的元组的方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 2020-11-25
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 2019-10-05
    相关资源
    最近更新 更多