2014-01-14 1 views
-1

Раньше был полезный мошенник Scala Option на this blog, но он, кажется, был снят. Кто-нибудь спас его?Как понять ops на Option как шаблоны?

+0

Может выразить вопрос, как: Как понять опа на опции как спички шаблон? чтобы избежать закрытия. –

+0

@ som-snytt благодарит вас за предложение, я с трудом думал о соответствующем заглавии. –

ответ

2

Вы можете получить полную версию (с введением) на archive.org.

Link to archive version.

+0

Архив fu! Какое полезное умение. –

+0

@ som-snytt: вопрос: «Кто-нибудь сохранил его?». Что я могу сделать? – senia

+0

Это не было сарказмом, я дал +1! Извините, это звучит невозмутимо. Я даже прочитал ссылку и предложил комментировать другой ответ. –

3

Примечание: senia has provided the whole original post, который включает введение и чит-лист (который также приведен ниже в этом ответе).

This blog did! (Я неаффилирован). Всегда полезно шпаргалка:


flatMap:

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

Flatten:

// 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)) 
} 

Еогеасп:

// 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) 
} 

OrElse:

// 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 и дубликат не входят в стандартную библиотеку. Вам нужно будет написать это самостоятельно или использовать Scalaz.


Конец отрывок

+5

Трюк, чтобы запомнить все это без необходимости искать его, - это выбрать опцию как специализированную коллекцию, содержащую нуль или один элемент. –

+0

Я собирался сказать: «Ты оставил последние несколько, которые, по-видимому, не перекликались, но я должен изменить это, чтобы сказать, что ваш источник оставил их. –

+0

@JCracknell Как это соотносится с метафорой буррито? –

Смежные вопросы