我试图进行研究,但仍然没有弄清楚Scala的术语是什么,与下面的代码中的小写a,b有关。
def curry[A, B, C](f: (A, B) => C): A => (B => C) = a => b => f(a, b)
为什么a,b出现在右手边?
我知道它是代数数据类型的一部分,但仍然找不到匹配的定义。
更新基于的答案,"Scala从返回类型A => (B => C)中知道a和b的类型。a是A类型,b是B类型。“
我想问一下Scala如何知道a和b的类型,即:背后的机制?这是什么术语?
我想这是一种语言特征。当阅读这些复杂的代码时,请
我使用Scala2.11.8和Spark2.0.1来运行我的代码。在这一行代码中:
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
object training {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("test").setMaster("local[4]")
val sc = new SparkContext(conf)
来自Martin的“Scala编程”一书:
另一个有用的容器对象是元组。与列表一样,元组是不可变的,但与列表不同,元组可以包含不同类型的元素。
但我可以:
val oneTwoThreee = List(1, 2, "Third Element") //same as:List.apply(1,2,3)
for (i <- 0 to 2) {
println(oneTwoThreee.apply((i)))
}
其产出是:
1
2
Third Element
因此Scala中的List可以有不同类型的元素。
在同一本书中:
您可能想知道为什么不能访问元组的
scala> val two = (1,2)
two: (Int, Int) = (1,2)
scala> val one = (1,)
<console>:1: error: illegal start of simple expression
val one = (1,)
^
scala> val zero = ()
zero: Unit = ()
是这样的吗:
val one = Tuple1(5)
在Scala中编写单例元组文字的最简洁方法是什么?Unit是否像一个空元组一样工作?
这种不一致会让其
我对scala还不熟悉,我正在尝试实现一个do while循环,但我似乎无法让它停止。我不知道我做错了什么。如果有人能帮我,那就太好了。这不是我所知道的最好的循环,但我对语言是陌生的。下面是我的代码:
def mnuQuestionLast(f: (String) => (String, Int)) ={
var dataInput = true
do {
print("Enter 1 to Add Another 0 to Exit > ")
var dataInput1 = f(readLine)
if (dataInput1
讨论了如何创建一个绑定到一个arg函数的元组。这会导致
scala> println(1, 2)
(1,2)
答案是编译器允许在没有括号的情况下调用一个arg函数,因此从逻辑上讲,这是一个带有元组的println调用。
但不能使用单个元组参数调用println
scala> val t = (1, 2)
t: (Int, Int) = (1,2)
scala> println t
<console>:6: error: value t is not a member of Unit
println t
^
所以有别的事情发生了
举了一些例子..。在Scala的REPL上。
在实例化数组对象(尝试测试++运算符)时,我完全忘记了键入Array。
不管怎样,现在我想知道这是什么数据类型?
val one = (1,2,3)
或者上面的代码是什么数据结构或容器?这是什么电话?为什么它是有用的?我不相信REPL对上面的代码提供了任何有用的信息。
谢谢您抽时间见我。
我正在了解火花,并想把一个列表(大约1000个条目)转换为一个火花df。
不幸的是,我得到了标题中提到的错误。我不知道是什么导致了这个错误,如果有人能帮我,我会非常感激的。到目前为止,这是我的代码:
# Pyspark SQL library
from pyspark.sql import SparkSession
from pyspark.sql.types import ArrayType
from pyspark.sql.types import StructField
from pyspark.sql.types import StructType
from pyspark.sql.t
我正在使用scala尝试一些基本的逻辑。我尝试了下面的代码,但它会引发错误。
scala> val data = ("HI",List("HELLO","ARE"))
data: (String, List[String]) = (HI,List(HELLO, ARE))
scala> data.flatmap( elem => elem)
<console>:22: error: value flatmap is not a member of (String, List[String])
检查这个REPL会话,在Scala2.12.10下面:
scala> val a = 3 match { case 3 => 1 case 4 => println("why") }
a: AnyVal = 1
scala> val a: Int = 3 match { case 3 => 1 case 4 => println("why") }
<console>:11: error: type mismatch;
found : Unit
required: Int
val a: Int
假设我有一个scala函数,它应该返回一个(String, Int, Int) mapped to keys (words, row, col)类型的元组
def getResult(param: Int) {
// a lot of logic goes here to generate tuple values
// now return the tuple
}
在调用程序代码中:
var words, row, col
if(someValue) {
getResults(someValue) // assigns the tuple values to keys w
我有一个类似于普通sql中的查询
Select * from persons
where (persons.first_name, persons.last_name)
in (('a', 'b'), ('c', 'd'))
我正尝试在scala中执行此操作
val names = List(("James", "hasi"), ("Michael", "Myers))
sql""" Select * from ${table} where
我有以下scala代码
def message(attachmentId: UUID) : URI = {
var r : mutable.MutableList[BasicTemplate] = new mutable.MutableList[BasicTemplate]
val t : Type = new TypeToken[Iterable[BasicTemplate]](){}.getType()
val m : String = "[{\"basicTemplate\":\"TEMPLATE\",\"baseline\
为了特殊情况,我想缩小模式匹配时的类型,但是当试图将我的模式匹配的元组绑定到变量时,Scala编译器似乎失去了在匹配中执行的缩小类型。这使我无法仅仅转发匹配,而是必须重新创建元组,以便保留类型。
缩小的例子:
sealed trait Fruit
case class Apple(weight: Int = 200) extends Fruit
case object Orange extends Fruit
object PatternBinding extends App {
def handleApple(appleWithIndex: (Apple, Int)) =
pr
‘'map’保留了元素的数量,因此在元组上使用它似乎是明智的。
到目前为止我的尝试:
scala> (3,4).map(_*2)
error: value map is not a member of (Int, Int)
(3,4).map(_*2)
^
scala> (3,4).productIterator.map(_*2)
error: value * is not a member of Any
(3,4).productIterator.map(_*2)
我想知道Scala中的部分函数是否可以接受多个参数进行转换,例如
val test: PartialFunction[Int, Boolean, String] = { case d: Int if d > 0 => "one" }
test(0, true)
在这里,我想传递一个int和一个布尔值,这样它就可以将它重新计算成一个字符串,这有可能吗?