ブックマーク / kmizu.hatenablog.com (3)

  • 初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記

    Scalaでnullを使っていいのは小学生までだよねー、というのは冗談ですが、Scala文化圏ではnullを使わないのが原則です(いくつか例外はありますが)。代わりに出てくるのがOption型です。しかし、Scalaでは困ったことにnullを返すJavaのメソッドを呼び出さなければいけない場面がたくさんあります。 たとえば、以下のようなコードを書かなければいけない場面にはしばしば遭遇します。 val javaMap: java.util.Map[String, String] = javaObject.getMapping() val value: String = javaMap.get(key) // 型注釈はあえて付けている if(value != null) { ... } else { ... } さて、ここで困るのが、javaMap.get(key)はkeyに対応する値が入って

    初学者向けの Scala Tips (2) - nullからOptionへの変換 - kmizuの日記
  • 型クラスをOrderingを用いて説明してみる - kmizuの日記

    ちょっと今日は疲れてるので、表題の件について、簡単に書いてみる。私の経験上、型クラスにおける、最も多い誤解は、(Javaとかにおける)インタフェースのようなもの、というもので、これはかなり多くの人にみられるように思う。 まず、そもそも、何故そういう勘違いが生まれたかを考えてみると、「インスタンス」「メソッド」といったオブジェクト指向言語にもある用語が使われていること、また、両者とも「操作の集合を提供する」という特徴があるためではないかと思う。しかし、根的な違いがある。一番大きなものは、型クラスは(一般的には)レシーバ(thisといってもselfといってもなんでもいいが)とそれに付随する状態が基的に存在しない、という点だ。 この点について、Scalaの標準ライブラリにおいて、両者の違いを説明するのに格好の例がある。OrderingとOrderedだ。混乱を避けるために先に説明しておくと、

    型クラスをOrderingを用いて説明してみる - kmizuの日記
  • Scalaでimplicits呼ぶなキャンペーン - kmizuの日記

    はじめのはじめに implicitsは可読性が…という人が居たら、この記事へのリンクを教えてあげていただければと思います TL;DR Scalaには俗に「implicits」と呼ばれる機能がある 実際にはそれらは3つの機能をまとめて指す用語である それぞれの機能は全く異なる 暗黙の型変換は現代では無視してよし 拡張メソッドは、既存の言語でそれを持つのと同じ程度の簡単さである 型クラスとしての用法は、型クラスがある言語を知らないとやや難しいが、積極的に使う価値がある機能である 「implicits」は異なる3つの機能を一つにまとめた呼び方に過ぎず混乱を招くので、使うのをやめよう(個々の機能名で呼ぼう)。また、暗黙の型変換は無視して良いし、拡張メソッドはよく知られているので、型クラスとしての用法にフォーカスして良い はじめに Scalaには俗にimplicitsと呼ばれる機能(群)があります。

    Scalaでimplicits呼ぶなキャンペーン - kmizuの日記
  • 1