2014-01-14 34 views

回答

2

結束時,你可能會得到archive.org完整版(含引進)。

Link to archive version.

+0

存檔fu!多麼有用的技巧。 –

+0

@ som-snytt:問題是「有人救了它嗎?」。我能做什麼? – senia

+0

這不是諷刺,我給了+1!對不起,它確實聽起來沒有聲音。我甚至讀過鏈接,並對另一個答案提供了不同的評論。 –

3

注意:senia has provided the whole original post,其中包括介紹和cheatsheet(這也是下面在這個答案)。

This blog did!(我是無黨派的)。不斷有幫助的cheatsheet:


flatMap:

// This code is equivalent to: 
// option.flatMap(foo(_)) 
option match { 
    case None => None 
    case Some(x) => foo(x) 
} 

扁平化:

// This code is equivalent to: 
// option.flatten 
option match { 
    case None => None 
    case Some(x) => x 
} 

地圖:

// This code is equivalent to: 
// option.map(foo(_)) 
option match { 
    case None => None 
    case Some(x) => Some(foo(x)) 
} 

的foreach:

// This code is equivalent to: 
// option.foreach(foo(_)) 
option match { 
    case None => {} 
    case Some(x) => foo(x) 
} 

isDefined:

// This code is equivalent to: 
// option.isDefined 
option match { 
    case None => false 
    case Some(_) => true 
} 

的isEmpty:

// This code is equivalent to: 
// option.isEmpty 
option match { 
    case None => true 
    case Some(_) => false 
} 

的forall:

// This code is equivalent to: 
// option.forall(foo(_)) 
option match { 
    case None => true 
    case Some(x) => foo(x) 
} 

存在:

// This code is equivalent to: 
// option.exists(foo(_)) 
option match { 
    case None => false 
    case Some(x) => foo(x) 
} 

否則容易:

// This code is equivalent to: 
// option.OrElse(foo) 
option match { 
    case None => foo 
    case Some(x) => Some(x) 
} 

getOrElse:

// This code is equivalent to: 
// option.getOrElse(foo) 
option match { 
    case None => foo 
    case Some(x) => x 
} 

toList:

// This code is equivalent to: 
// option.toList 
option match { 
    case None => Nil 
    case Some(x) => x :: Nil 
} 

coflatMap *:

// This code is equivalent to: 
// option.coflatMap(foo(_)) 
option match { 
    case None => None 
    case Some(_) => Some(foo(option)) 
} 

複製*:

// This code is equivalent to: 
// option.duplicate 
option match { 
    case None => None 
    case Some(_) => Some(option) 
} 

*:不幸的是,coflatMap和duplicate不是標準庫的一部分。您需要自己寫或使用Scalaz。


的摘錄

+5

記住所有這些而不必查找它的技巧是將選項想象爲包含零個或一個元素的專用集合。 –

+0

我想說的是,你放棄了最後幾個你可能沒有耿耿於懷的人,但是我必須修改它,說你的消息來源將他們拒之門外。 –

+0

@JCracknell這如何符合捲餅比喻? –