2016-09-23 109 views
0

我在學習scala,我想我不明白一些非常基本的東西。我一直無法在網上找到明確的答案。我想在一個函數中聲明一個變量,這樣我就可以做一些操作,就像我將在Python或Java中那樣做。因此,例如我宣佈這個代碼的功能之外,它有沒有問題:簡單的scala幫助:簡單表達式的開始簡化

var myint = 10; 

但是,當我嘗試做任何聲明,因此,例如聲明函數內的同一個變量:

def product [A,B](xs:List[A]) (ys:List[B]) = 
    var myint = 10; 

我得到「非法開始簡單表達」。這是爲什麼發生?聲明函數內部和外部有什麼區別?

我想要做的總體是聲明一個新的變量,需要這兩個列表並創建列表的列表。所以如果xs = [1,2]和ys = [6,7],我想創建一個變量[[1,2] [6.7]]。我怎麼能在產品功能裏創建這個變量?

非常感謝!

+0

括號,'def f = {stuff}'。包含多個表達式。 –

回答

1

你不需要一個變量。只需返回列表的新列表。 (您也不需要分號。)

def product[A](xs: List[A], ys: List[A]): List[List[A]] = 
    List(xs,ys) 

Scala是一種靜態類型語言。它會密切關注所有元素,參數,返回類型等的類型。請注意,如果兩個列表的類型不同,返回類型將發生變化。

def product[A,B](xs: List[A], ys: List[B]): List[List[Any]] = 
    List(xs,ys) 

這相當於類型信息的丟失,這通常會導致不良後果。躲開它。