在蟒我可以簡單地定義一個函數是這樣的:階:通過元組參考起作用
def func(lst):
lst[0] = lst[0] + 5
return lst
這「LST」可以採取不同的長度作爲參數的列表。
如何在Scala中使用元組來實現它?
注:我試圖在Python中編寫的Scala中實現Spark程序(或通用庫)。在該程序中有這個函數,它將RDD的每條記錄作爲參數,對其進行操作並返回。現在這些記錄的長度可以根據調用函數的RDD而變化。
在蟒我可以簡單地定義一個函數是這樣的:階:通過元組參考起作用
def func(lst):
lst[0] = lst[0] + 5
return lst
這「LST」可以採取不同的長度作爲參數的列表。
如何在Scala中使用元組來實現它?
注:我試圖在Python中編寫的Scala中實現Spark程序(或通用庫)。在該程序中有這個函數,它將RDD的每條記錄作爲參數,對其進行操作並返回。現在這些記錄的長度可以根據調用函數的RDD而變化。
你可以這樣做:
def add5ToHead(list: List[Int]) = {
list match {
case head :: tail => head+5 :: tail
case l => l
}
}
的copy
方法可能是一個很好的適合你的情況:
def func1(t: (Int, Int, Int)) = t.copy(_1 = t._1 + 5)
Int
類型和+5
只是一個例子,你可以通過在值和通過額外的參數鍵入。
你也可以應用PartialFunction
你的方法,如:
val partialFunc1: PartialFunction[Int, Int] = {
case x => x + 5
}
def func1(t: (Int, Int, Int), f: PartialFunction[Int, Int]) = t.copy(_1 = f(t._1))
func1((1,2,3), partialFunc1) // output will be (6,2,3)
確切相當於你的描述會是這個樣子這個Python函數:
def func(list: List[Any]) = list.headOption.map {
_.asInstanceOf[Int] + 5
} ++ list.tail
不過不要」不要這樣做。類型安全性(能夠確保在編譯時你正在查看的數據與你期望的類型完全相同)是從python開始選擇scala的最大原因之一。
如果你不打算使用它,爲什麼還要在scala中重寫你的python代碼?只需使用你擁有的。
唯一的問題是_List/Tuple_的元素可以是不同的類型。所以它必須是一個元組。 – Mrinal