Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 集合从何而来;val Singleton4:Set=Set=>;set==4";?_Scala - Fatal编程技术网

Scala 集合从何而来;val Singleton4:Set=Set=>;set==4";?

Scala 集合从何而来;val Singleton4:Set=Set=>;set==4";?,scala,Scala,val Singleton4:Set=Set=>Set==4的详细方式是什么?我无法理解set参数从何而来。它不是从任何地方“来的,set被定义为从整数到布尔值的函数,Singleton4的类型正是这样,它接受一个整数并返回一个需要另一个整数并返回布尔值的函数: scala> type Set = Int => Boolean defined type alias Set scala> def singletonSet(elem: Int): Set = set =&

val Singleton4:Set=Set=>Set==4的详细方式是什么?我无法理解
set
参数从何而来。

它不是从任何地方“来的,
set
被定义为从整数到布尔值的函数,
Singleton4
的类型正是这样,它接受一个整数并返回一个需要另一个整数并返回布尔值的函数:

scala>   type Set = Int => Boolean
defined type alias Set

scala>   def singletonSet(elem: Int): Set = set => set == elem
singletonSet: (elem: Int)Int => Boolean

scala>   val p: Set = singletonSet(3)
p: Int => Boolean = <function1>
另一种写作方式是:

def singletonSet(elem: Int) =  (i: Int) => i == elem
val p: (Int) => Boolean = singletonSet(3)
或者使用不同的方法但获得相同的结果:

def singletonSet(elem: Int)(i: Int): Boolean = i == elem
val p: (Int) => Boolean = singletonSet2(3)
通过对函数进行curry运算并仅应用一个参数,您将返回一个仍然需要另一个整数才能完全计算的函数。

它不是从任何地方“来”的,
Set
被定义为从整数到布尔值的函数,
Singleton4
的类型正是这样,它接受一个整数并返回一个函数,该函数需要另一个整数并返回一个布尔值:

scala>   type Set = Int => Boolean
defined type alias Set

scala>   def singletonSet(elem: Int): Set = set => set == elem
singletonSet: (elem: Int)Int => Boolean

scala>   val p: Set = singletonSet(3)
p: Int => Boolean = <function1>
另一种写作方式是:

def singletonSet(elem: Int) =  (i: Int) => i == elem
val p: (Int) => Boolean = singletonSet(3)
或者使用不同的方法但获得相同的结果:

def singletonSet(elem: Int)(i: Int): Boolean = i == elem
val p: (Int) => Boolean = singletonSet2(3)

通过对函数进行curry运算并仅应用一个参数,您将返回一个仍然需要另一个整数才能完全计算的函数。

可能会让您感到困惑的是,
Set
并不是人们期望从Scala库中得到的。你应该把这一行读为:

val Singleton4:   Int => Boolean = someArbitraryName => someArbitraryName == 4
//  <identifier>  <type>         = <argument>        => <returnValue>
val Singleton4:Int=>Boolean=someArricryName=>someArricryName==4
//             =         => 

让您困惑的是,
Set
并不是人们期望从Scala库中得到的。你应该把这一行读为:

val Singleton4:   Int => Boolean = someArbitraryName => someArbitraryName == 4
//  <identifier>  <type>         = <argument>        => <returnValue>
val Singleton4:Int=>Boolean=someArricryName=>someArricryName==4
//             =         => 

其他答案都很好,但我想我应该提供一些额外的细节,以帮助Scala的新手更好地理解该符号(因为符号中有一些隐藏的宝石没有被发现/描述)

让我们玩Scala编译器游戏吧

下面的
val
说明了类型所代表的内容

val Singleton4: Set = set => set == 4
明确给出了
val
的类型-它是
Set
。然而,我们对它知之甚少……还没有。但是,在使用它之前,必须将它交给编译器,并且在左边,它是一个函数(请注意,
=>
两个字母的字符串),从类型(稍后我们将讨论它)到
布尔值,因为
set==4
将不可避免地以
布尔值结束

set==4
中,我们可以推断
set
只能是
Int
(因此您可以将苹果与苹果进行比较),因此我们得到了
set
的类型为
Int

val
=
右侧也可以写成:

val Singleton4: Set = (set: Int) => set == 4
因此,
Singleton4
val是一个名为
Set
的函数
Int=>Boolean
的实例<代码>集合
在上面的某个地方声明为(词典):

您可以将
Set
替换为类型别名,最后得到:

val Singleton4: Int => Boolean = (set: Int) => set == 4

其他答案都很好,但我想我应该提供一些额外的细节,以帮助Scala的新手更好地理解该符号(因为符号中有一些隐藏的宝石没有被发现/描述)

让我们玩Scala编译器游戏吧

下面的
val
说明了类型所代表的内容

val Singleton4: Set = set => set == 4
明确给出了
val
的类型-它是
Set
。然而,我们对它知之甚少……还没有。但是,在使用它之前,必须将它交给编译器,并且在左边,它是一个函数(请注意,
=>
两个字母的字符串),从类型(稍后我们将讨论它)到
布尔值,因为
set==4
将不可避免地以
布尔值结束

set==4
中,我们可以推断
set
只能是
Int
(因此您可以将苹果与苹果进行比较),因此我们得到了
set
的类型为
Int

val
=
右侧也可以写成:

val Singleton4: Set = (set: Int) => set == 4
因此,
Singleton4
val是一个名为
Set
的函数
Int=>Boolean
的实例<代码>集合
在上面的某个地方声明为(词典):

您可以将
Set
替换为类型别名,最后得到:

val Singleton4: Int => Boolean = (set: Int) => set == 4

赋值的左手在“val p:(Int)=>Boolean=singletonSet2(3)”中是什么意思?我从未见过像val p这样的语法:…
val p:(Int)=>Boolean
means
p
是一个接受整数并返回布尔值的函数,如果您使用过集合并使用过fold、map、reduce等,请检查它们的签名,它们都从泛型类型
a
中获取一些函数,并返回一个泛型类型
B
,该泛型类型用scala语法编写
f:a=>B
,这是
map
的定义,没有一些杂音:
defmap[B,即](f:a=>B)
赋值的左手在“val p:(Int)中是什么意思=>Boolean=singletonSet2(3)“我从来没有见过像val p:…
val p:(Int)=>Boolean
means
p
是一个接受整数并返回布尔值的函数,如果您使用过集合并使用过fold、map、reduce等,请检查它们的签名,它们都从泛型类型
a
中获取一些函数,并返回一个泛型类型
B
,它是用scala语法编写的
f:a=>B
,这是
map
的定义,没有一些杂音:
defmap[B,即](f:a=>B)