gpt4 book ai didi

scala - 函数应用和类型关联

转载 作者:行者123 更新时间:2023-12-04 17:36:52 25 4
gpt4 key购买 nike

在 Scala 中,函数应用程序关联到左侧,而函数类型关联到右侧(Scala 类(class)第二周)。我不明白这个。谁能解释一下?

“函数应用”和“函数类型”到底有什么区别?

最佳答案

通常,关联性(左或右)是某个符号(运算符)的预定义属性,它告诉我们应该如何读取在链中多次使用该符号的表达式。

例如,Scala 中的函数应用程序是这样的表达式 fun(param1, ...) .可以链接,例如:fun(a,b)()(g,h) .并且它是左结合的这一事实意味着这样的表达式等价于 ((fun(a,b))())(c,d) ,即(在伪代码中):

( ( fun applied to arguments a and b ) applied to no arguments ) applied to arguments c and d

Scala 中的函数类型是一种函数对象。 Scala 有其特定的符号来表示此类类型。此表示法使用 =>运算符(operator)。例如 String => Int是一种需要 String 的函数作为参数并返回 Int .

现在,问题来了,什么是 String => Int => Float ?它是一个将 String 中的函数作为参数的函数吗?至 Int并返回 Float ?或者它可能是一个需要 String 的函数并从 Int 返回一个函数至 Float ?

换句话说,我们应该读 String => Int => Float吗?如 (String => Int) => FloatString => (Int => Float) ?如 =>运算符是左结合的,那么它就是 (String => Int) => Float .如果是右结合,则为 String => (Int => Float) .

众所周知, =>是右结合的,这意味着 String => Int => Float相当于 String => (Int => Float)它表示接受 String 的函数的类型并返回另一个接受 Int 的函数并返回 Float .

关于scala - 函数应用和类型关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15798165/

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