memo

class, abstract class, trait, object

class abstract trait object 抽象メソッド x o o x インスタンス o x x o コンストラクタ引数 o o x x 継承の集約 サブクラスは1個、traitはいっぱい //1こめはtraitでもextends trait ATrait class AClass extends ATrait abstract class と taritの使い…

Traitを

Scalaトレイト メモ(Hishidama's Scala trait Memo) Class,Abstract Class,Trait,Objectの違いまとめ - うなの日記

ops.collect

しあわせになれる @inline final def collect[B](pf: PartialFunction[A, B]): Option[B] = if (!isEmpty) pf.lift(this.get) else None

なんかおわってた、Atom + Ensime

atom + Ensime 環境構築 大本 https://www.ncaq.net/2018/05/18/16/15/50/ とか org.ensime:ensime_2.12:1.0.0 No fallback URL found not found → https://github.com/ensime/ensime-atom/issues/286

scalaz参考

scalaz参考 leanpub.com eed3si9n.com

Unit

val u1 = () // => u1: Unit = () val u2 = Unit // => u2: Unit.type = object scala.Unit Unitは、Unitオブジェクトらしい

Trait

先ほど例で使用したfunc変数は「(Int,Int) => Int」という型を宣言していましたが、次のように記述しても同様の関数オブジェクトが定義可能です。 ``` scala> val func:Function2[Int,Int,Int] = (x:Int, y:Int) => x + yfunc: (Int, Int) => Int = <function2> ```この</function2>…

型パラメータ

型パラメータ def post: Action[Request] = Action.async(DtoParser.parse[Request]) { implicit request => final def async[A](bodyParser: BodyParser[A])(block: R[A] => Future[Result]): Action[A] = composeAction(new Action[A] { def executionCont…

toNel

List#toNel NotEmptyListを返す。 NonEmptyListを使えば空リストでは無いことが保証されるのでhead, tailが必ず成功する。 reduceLeft, reduceRightでも同様に確実に成功する。 val hoges = List(hoge1, hoge2) //def toNel: Option[NonEmptyList[A]] = l.to…