相关疑难解决方法(0)

Scala中方法和函数之间的区别

我阅读了Scala Functions(另一个Scala之旅的一部分).在那篇文章中他说:

方法和功能不是一回事

但他没有解释任何有关它的事情.他想说什么?

methods scala function

244
推荐指数
6
解决办法
7万
查看次数

两种在Scala中定义函数的方法.有什么不同?

这是一个Scala会话,它定义并尝试了一些函数:

scala> def test1(str: String) = str + str;    
test1: (str: String)java.lang.String

scala> test1("ab")
res0: java.lang.String = abab
Run Code Online (Sandbox Code Playgroud)

很好地工作.

scala> val test2 = test1
<console>:6: error: missing arguments for method test1 in object $iw;
follow this method with `_' if you want to treat it as a partially applied function
       val test2 = test1
                   ^
Run Code Online (Sandbox Code Playgroud)

哎呀.

scala> val test2 = test1 _
test2: (String) => java.lang.String = <function1>

scala> test2("ab")
res1: java.lang.String = abab
Run Code Online (Sandbox Code Playgroud)

效果很好!

现在,我已经看到_折叠时的语法(_ + …

scala function currying

44
推荐指数
3
解决办法
3万
查看次数

功能与括号和没有的区别

可能重复:
Scala中的函数与方法Scala中
def foo = {}和def foo()= {}之间的区别是什么?

在scala我们可以定义

def foo():Unit = println ("hello")
Run Code Online (Sandbox Code Playgroud)

要么

def foo:Unit = println ("hello")
Run Code Online (Sandbox Code Playgroud)

我知道它们不一样但有什么区别,哪些应该在什么时候使用?

如果之前已经回答过,请指出我的链接.

scala

33
推荐指数
1
解决办法
1万
查看次数

Scala中def f(x:Int)= x + 1和val f =(x:Int)=> x + 1之间的实际差异

我是Scala的新手,我遇到了解问题.为什么有两个相同概念的语法,并且没有一个更有效或更短(仅从打字的角度来看,也许它们的行为不同 - 这就是我所要求的).

在Go中,类比具有实际差异 - 您无法正向引用分配给变量的lambda,但您可以从任何地方引用命名函数.如果我理解正确的话,Scala会混合这两个:你可以转发任何变量(如果我错了请纠正我).


请注意,这个问题并不重复定义函数的"def"和"val"之间什么区别.

我知道每次引用/调用def=都会对表达式进行求值,并且val只有一次.但这是不同的,因为val定义中的表达式求值为函数.


它也不是Scala中函数与方法的重复.

这个问题涉及Scala的语法,并没有直接询问函数和方法之间的区别.尽管答案内容可能相似,但在此网站上清除这一确切点仍然很有价值.

syntax scala function definition

10
推荐指数
1
解决办法
917
查看次数

def或val用于在Scala中定义Function

我正在学习我大学的编程范例,并阅读讲师提供的这门课程材料:

val double = (x: Int) => 2 * x
double: Int => Int = <function1>
Run Code Online (Sandbox Code Playgroud)

但是从我自己的研究中我发现并习惯于定义相同的函数:

def d (x: Int) = 2 * x
d: (x: Int)Int
Run Code Online (Sandbox Code Playgroud)

我是Scala的新手.这两个定义都给出了以下结果:

res21: Int = 8
Run Code Online (Sandbox Code Playgroud)

4作为参数传递时.现在我的主要问题是为什么讲师更喜欢val用来定义一个函数?我认为它更长,并不是真正必要的,除非使用val提供了一些我不知道的额外优势.除了我理解使用val使一些名称占位符所以稍后在程序中,我可能会错误地写val double = 5,功能将消失!在这个阶段,我非常确信我学会了一种更好的定义函数的方法,除非有人告诉我.

functional-programming scala function

9
推荐指数
2
解决办法
672
查看次数

阅读scala函数

我正在阅读这个页面,我在scala中遇到了这个函数定义:

def upper: String => String = _.toUpperCase
Run Code Online (Sandbox Code Playgroud)

尝试后,似乎它的工作方式与此相同:

def upper = (str: String) => str.toUpperCase()
Run Code Online (Sandbox Code Playgroud)

两个功能都一样吗?如果是这样,我如何阅读上述功能(第一个)?这种定义定义的方式有特定的名称吗?

scala function

3
推荐指数
1
解决办法
2510
查看次数