斯卡拉 | “<-”、“->”和“=>”运算符之间有什么区别,它们如何隐式工作?
Scala | what is the difference between '<-', '->' and '=>' operators and how do they work implicitly?
在学习 Scala 的基础知识时,我遇到了“<-”运算符,他们说它是来自任何 range/list 或集合的生成器。
- 它在什么基础上生成值,隐式生成值的方法是什么?
- 是否必须在Object.scala中使用main()?我不能在 Class.scala 中定义 main() 吗?
- 是否必须使 Object.scala 从 class 的方法中获取输出?
箭头
<-
、->
和 =>
是完全不同的东西,在 Scala 中有着完全不同的用途——比较它们没有多大意义。
<-
用于 for
理解。在 <-
的右侧是一个生成器,它是具有 foreach
方法的类型的实例,它生成 for
将要循环的元素。请注意,生成器不需要是一个集合 - 任何具有 foreach
方法的东西都可以工作(例如它可以是 Option
)。
->
是创建元组的方法。在使用方便、可读的语法创建 Map
时经常使用此方法。例如:
val map = Map("one" -> 1, "two" -> 2, "three" -> 3)
注意 "one" -> 1
与 ("one", 1)
相同(Tuple2
包含值 "one"
和 1
),等等
=>
用于函数字面量和函数类型,它是函数(或函数类型)参数和主体(或 return 类型)之间的分隔符。
main()
Scala 没有像 Java 这样的 static
。任何你想在 Java 中制作 static
的东西,你都会在 Scala 中放入 object
而不是 class
。
因为 main()
方法应该是 static
,它必须在 Scala 中定义在 object
中而不是在 class.
中
当然,您可以在 class 中创建一个 main()
方法,但您不能将其用作应用程序的入口点 - 它只是一个恰好被命名为 main
.
在学习 Scala 的基础知识时,我遇到了“<-”运算符,他们说它是来自任何 range/list 或集合的生成器。
- 它在什么基础上生成值,隐式生成值的方法是什么?
- 是否必须在Object.scala中使用main()?我不能在 Class.scala 中定义 main() 吗?
- 是否必须使 Object.scala 从 class 的方法中获取输出?
箭头
<-
、->
和 =>
是完全不同的东西,在 Scala 中有着完全不同的用途——比较它们没有多大意义。
<-
用于 for
理解。在 <-
的右侧是一个生成器,它是具有 foreach
方法的类型的实例,它生成 for
将要循环的元素。请注意,生成器不需要是一个集合 - 任何具有 foreach
方法的东西都可以工作(例如它可以是 Option
)。
->
是创建元组的方法。在使用方便、可读的语法创建 Map
时经常使用此方法。例如:
val map = Map("one" -> 1, "two" -> 2, "three" -> 3)
注意 "one" -> 1
与 ("one", 1)
相同(Tuple2
包含值 "one"
和 1
),等等
=>
用于函数字面量和函数类型,它是函数(或函数类型)参数和主体(或 return 类型)之间的分隔符。
main()
Scala 没有像 Java 这样的 static
。任何你想在 Java 中制作 static
的东西,你都会在 Scala 中放入 object
而不是 class
。
因为 main()
方法应该是 static
,它必须在 Scala 中定义在 object
中而不是在 class.
当然,您可以在 class 中创建一个 main()
方法,但您不能将其用作应用程序的入口点 - 它只是一个恰好被命名为 main
.