Scala defd=(x:int)=>;f(x)习惯了吗?
比如说:Scala defd=(x:int)=>;f(x)习惯了吗?,scala,Scala,比如说: def f(i: Int) : String = i.toString def d = (x: int) => f(x) 当d不接受任何参数时,如何使用它?这里,d返回一个函数,该函数接受Int并返回字符串,因此d的签名是 def d: Int => String 实际上,d是否实际实现为def或val并不重要,因为它不接受参数,并且确定性地返回x=>f(x) 因此,每次调用d,都会返回函数x=>f(x),您可以像调用任何其他函数一样调用该函数,该函数接受Int,因此:
def f(i: Int) : String = i.toString
def d = (x: int) => f(x)
当
d
不接受任何参数时,如何使用它?这里,d
返回一个函数,该函数接受Int
并返回字符串,因此d
的签名是
def d: Int => String
实际上,d
是否实际实现为def
或val
并不重要,因为它不接受参数,并且确定性地返回x=>f(x)
因此,每次调用d
,都会返回函数x=>f(x)
,您可以像调用任何其他函数一样调用该函数,该函数接受Int
,因此:
println(d) // prints <function1>
println(d(10)) // prints 10
println(d(5)) // prints 5
请注意,在您的特定情况下,d
实际上只是部分应用函数f
的别名 这里,d
返回一个函数,该函数接受Int
并返回字符串,因此d
的签名是
def d: Int => String
实际上,d
是否实际实现为def
或val
并不重要,因为它不接受参数,并且确定性地返回x=>f(x)
因此,每次调用d
,都会返回函数x=>f(x)
,您可以像调用任何其他函数一样调用该函数,该函数接受Int
,因此:
println(d) // prints <function1>
println(d(10)) // prints 10
println(d(5)) // prints 5
请注意,在您的特定情况下,d
实际上只是部分应用函数f
的别名 这里,d
返回一个函数,该函数接受Int
并返回字符串,因此d
的签名是
def d: Int => String
实际上,d
是否实际实现为def
或val
并不重要,因为它不接受参数,并且确定性地返回x=>f(x)
因此,每次调用d
,都会返回函数x=>f(x)
,您可以像调用任何其他函数一样调用该函数,该函数接受Int
,因此:
println(d) // prints <function1>
println(d(10)) // prints 10
println(d(5)) // prints 5
请注意,在您的特定情况下,d
实际上只是部分应用函数f
的别名 这里,d
返回一个函数,该函数接受Int
并返回字符串,因此d
的签名是
def d: Int => String
实际上,d
是否实际实现为def
或val
并不重要,因为它不接受参数,并且确定性地返回x=>f(x)
因此,每次调用d
,都会返回函数x=>f(x)
,您可以像调用任何其他函数一样调用该函数,该函数接受Int
,因此:
println(d) // prints <function1>
println(d(10)) // prints 10
println(d(5)) // prints 5
请注意,在您的特定情况下,d
实际上只是部分应用函数f
的别名 但是,它确实需要参数:
scala> def f(i: Int) : String = i.toString
f: (i: Int)String
scala> def d = (x: Int) => f(x)
d: Int => String
因此,d
实际上是一个函数,它接受一个Int
并返回一个String
…这在这个例子中是没有意义的,因为它与原始函数做的是相同的事情。作为包装函数和使用包装函数执行其他转换的一种方法,这种类型的操作通常更有用,但它确实需要参数:
scala> def f(i: Int) : String = i.toString
f: (i: Int)String
scala> def d = (x: Int) => f(x)
d: Int => String
因此,d
实际上是一个函数,它接受一个Int
并返回一个String
…这在这个例子中是没有意义的,因为它与原始函数做的是相同的事情。作为包装函数和使用包装函数执行其他转换的一种方法,这种类型的操作通常更有用,但它确实需要参数:
scala> def f(i: Int) : String = i.toString
f: (i: Int)String
scala> def d = (x: Int) => f(x)
d: Int => String
因此,d
实际上是一个函数,它接受一个Int
并返回一个String
…这在这个例子中是没有意义的,因为它与原始函数做的是相同的事情。作为包装函数和使用包装函数执行其他转换的一种方法,这种类型的操作通常更有用,但它确实需要参数:
scala> def f(i: Int) : String = i.toString
f: (i: Int)String
scala> def d = (x: Int) => f(x)
d: Int => String
因此,d
实际上是一个函数,它接受一个Int
并返回一个String
…这在这个例子中是没有意义的,因为它与原始函数做的是相同的事情。作为包装函数和使用包装函数进行其他转换的一种方法,这种类型的操作通常更有用