Scala 为什么该方法只接受一个参数?
看看这个漂亮的斐波那契实现:Scala 为什么该方法只接受一个参数?,scala,Scala,看看这个漂亮的斐波那契实现: scala> val fibs = { def go(f0: Int, f1: Int): Stream[Int] = Stream.cons(f0, go(f1, f0+f1)) go(0, 1) } fibs: Stream[Int] = Stream(0, ?) 乍一看,它似乎接受两个参数go(f0:Int,f1:Int),但尝试这样做会导致太多的gumentsexcep
scala> val fibs = {
def go(f0: Int, f1: Int): Stream[Int] =
Stream.cons(f0, go(f1, f0+f1))
go(0, 1)
}
fibs: Stream[Int] = Stream(0, ?)
乍一看,它似乎接受两个参数go(f0:Int,f1:Int),但尝试这样做会导致太多的gumentsexception
然而,有一个论点,它可以很好地工作(正如它应该的那样)
如何知道fibs应该接受的参数数量?
fibs
不是一个方法,而是一个类型为Stream[Int]
的值
当您编写fibs(9)
时,您正在调用fibs.apply(9)
,对于流
,它通过序列中的索引选择元素(请参阅)
这与:
scala> val l = List(1,2,3,4)
l: List[Int] = List(1, 2, 3, 4)
scala> l(2)
res0: Int = 3
fibs
不是一个方法,它是一个类型为Stream[Int]
的值
当您编写fibs(9)
时,您正在调用fibs.apply(9)
,对于流
,它通过序列中的索引选择元素(请参阅)
这与:
scala> val l = List(1,2,3,4)
l: List[Int] = List(1, 2, 3, 4)
scala> l(2)
res0: Int = 3
fibs
不是一个方法,它是一个类型为Stream[Int]
的值
当您编写fibs(9)
时,您正在调用fibs.apply(9)
,对于流
,它通过序列中的索引选择元素(请参阅)
这与:
scala> val l = List(1,2,3,4)
l: List[Int] = List(1, 2, 3, 4)
scala> l(2)
res0: Int = 3
fibs
不是一个方法,它是一个类型为Stream[Int]
的值
当您编写fibs(9)
时,您正在调用fibs.apply(9)
,对于流
,它通过序列中的索引选择元素(请参阅)
这与:
scala> val l = List(1,2,3,4)
l: List[Int] = List(1, 2, 3, 4)
scala> l(2)
res0: Int = 3