簡體   English   中英

Scala列表理解

[英]Scala List Comprehensions

我正在嘗試根據公式生成scala中的列表:

for n > 1 f(n) = 4*n^2 - 6*n + 6 and for n == 1 f(n) = 1

目前我有:

def lGen(end: Int): List[Int] = {
    for { n <- List.range(3 , end + 1 , 2) } yields { 4*n*n - 6*n - 6 }
}

對於end = 5,這將給出列表:

List(24 , 76)

現在我一直試圖找到一種優雅的方式讓這個功能給

List(1 , 24 , 74)

任何建議將不勝感激。

- 李

我將列表生成中的“公式”分開:

val f : Int => Int = {
  case 1 => 1
  case x if x > 1 => 4*x*x - 6*x + 6
}

def lGen(end: Int) = (1 to end by 2 map f).toList

要么

def lGen(end: Int) = List.range(1, end + 1, 2) map f

這個怎么樣:

scala> def lGen(end: Int): List[Int] =
         1 :: List.range(3, end+1, 2).map(n => 4*n*n - 6*n + 6)

scala> lGen(5)
res0: List[Int] = List(1, 24, 76)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM