我很好奇是否有人知道为什么Scala库22以其元组类型停止Tuple22?
这个神秘的数字22是否具有特殊的隐藏意义?
这是某种内部玩笑吗?
我有一些专栏
age | company | country | gender |
----------------------------------
1 | 1 | 1 | 1 |
-----------------------------------
Run Code Online (Sandbox Code Playgroud)
我想创建像这样的对
考虑一个可能有大量成员的案例类; 为了说明这个案例假设两个论点,如
case class C(s1: String, s2: String)
Run Code Online (Sandbox Code Playgroud)
因此假设一个大小至少为那么多参数的数组,
val a = Array("a1", "a2")
Run Code Online (Sandbox Code Playgroud)
然后
scala> C(a(0), a(1))
res9: C = c(a1,a2)
Run Code Online (Sandbox Code Playgroud)
但是,是否存在一种案例类实例化方法,其中不需要为数组中的每个元素引用任何(可能是大量)预定义类成员?
我有超过30个字符串的列表。如何将列表转换为数据框。我试过的
例如
Val list=List("a","b","v","b").toDS().toDF()
Output :
+-------+
| value|
+-------+
|a |
|b |
|v |
|b |
+-------+
Expected Output is
+---+---+---+---+
| _1| _2| _3| _4|
+---+---+---+---+
| a| b| v| a|
+---+---+---+---+
Run Code Online (Sandbox Code Playgroud)
任何对此的帮助。
我想在元组上使用一些函数,它返回元组只有第一个元素被转换而其他元素没有变化.
这是Tuple2的天真版本:
def mapFirst[T, U, R](tuple: (T, U))(f: T => R): (R, U) = tuple match {
| case (x, y) => f(x) -> y
| }
mapFirst((1, 2))(_ * 5) // returns (5, 2)
Run Code Online (Sandbox Code Playgroud)
虽然,它不觉得原生,我想要的是这样写:
(1, 2).mapFirst(_ * 5)
Run Code Online (Sandbox Code Playgroud)
我写了隐式转换然后:
class RichTuple[T, U](tuple: (T, U)) {
def mapFirst[R](f: T => R): (R, U) = tuple match {
case (x, y) => f(x) -> y
}
}
implicit def tuple2RichTuple[T, U](tuple: (T, U)): RichTuple[T, U] = new RichTuple(tuple)
(1, 2).mapFirst(_ …Run Code Online (Sandbox Code Playgroud) 给定一个Tuple3,例如("one", "two", "three")我想获得tuple2,它只包含前两个元素("one", "two").
一种方法是这样的:
val (one, two, _) = ("one", "two", "three")
val result = (one, two)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想从tuple16获取tuple14,那该怎么办呢?样板.
更新:
更具体的用例(func2和func3不能更改).
def func3(one: String, two: String, three: String) = println("Do something")
def func2(one: String, two: String) = println("Do something 2")
val originalTuple = ("one", "two", "three")
val newTuple = ???
(func3 _).tupled(originalTuple)
(func2 _).tupled(newTuple)
Run Code Online (Sandbox Code Playgroud) 我正在为任何数量的参数寻找一种通用的解决方案(我可以说实际上并不是超过15个参数),我有一个函数。
def test(a: String, b: Int): Int = 0
Run Code Online (Sandbox Code Playgroud)
我有一个Seq [Any]。
val seq: Seq[Any] = Seq("Hi", 5)
Run Code Online (Sandbox Code Playgroud)
如何使用此seq作为参数调用功能测试?
现在,我尝试了一下,test(seq:_*)但是那不起作用,因为它与函数类型不匹配,编译器无法理解要使用哪个函数。
Scala宏在这里有用吗?
(您正在查看并思考,这是一个坏主意,为什么首先要使用Seq [Any]?它的坏习惯,是的,但这是一个问题,我不是在问它是否是一个好主意。还是不,因为我知道它不好,所以我有一个Seq [Any],然后从那里开始出现问题)