タグ

ブックマーク / kazuhira-r.hatenablog.com (10)

  • Scalaから、Javaのインターフェースに定義されたeq(Object)メソッドを呼び出せない? - CLOVER🍀

    前回書いた、InfinispanのQuery DSLを使った時に、これにかなりハマりました。 Scalaには、AnyRefクラスにeqというメソッドが定義してあります。 final def eq(that: AnyRef): Boolean Scalaでクラスを書く場合は、わざわざこのメソッドと衝突するようなものを書こうと思わない(finalだし…)でしょうが、Java側で、しかもインターフェースで定義してあった場合にはちょっと苦労します。 簡単な例を出しましょう。 たとえば、こういうインターフェースを定義します。 src/main/java/HasEqInterface.java public interface HasEqInterface { String eq(Object target); } 引数がObjectのeqメソッドです。戻り値の型は、まあ何でもいいです。 で、このイン

    Scalaから、Javaのインターフェースに定義されたeq(Object)メソッドを呼び出せない? - CLOVER🍀
    mnru
    mnru 2013/12/16
  • 勢いで、ScalaFXとGroovyFX - CLOVER🍀

    夏休み前の小ネタ、第2弾。 今日、やたら目にしたこちらを見て。 RubyGUIアプリを作るならJRuby+JavaFX+Rawrで決まり! http://blog.supermomonga.com/articles/jruby/javafx-rawr.html ScalaとGroovyで、JavaFXを使って同じようなことをやっていました。 あ、最初に注意事項。 ScalaFX、GroovyFXはおろか、JavaFXも触ったことない人が書いてます あくまで、「同じ画面が出るまで」のところをやっただけで、exeファイル化とかは一切ノータッチです とはいえ、少しだけJavaFXに興味はあったので、勢いでマネしてみました。名前を先に出しちゃいましたけど、ScalaFXとGroovyFXで。 ScalaFX http://code.google.com/p/scalafx/ GroovyFX h

    勢いで、ScalaFXとGroovyFX - CLOVER🍀
    mnru
    mnru 2013/08/24
  • 記事一覧 - CLOVER🍀

    これは、なにをしたくて書いたもの? Dockerではtmpfsをマウントすることができます。 前に似たようなエントリーを書いたことがあるのですが、なぜか「(起動後の)Dockerコンテナ内でマウントする」で終わっていました…。 Dockerコンテナ内で、tmpfsをマウ…

    記事一覧 - CLOVER🍀
    mnru
    mnru 2013/02/13
  • GradleでScalaを使う - CLOVER🍀

    今度は、GradleでScalaを使って「Hello World」をやってみましょう。 基、ユーザガイドに沿ってやっていく感じです。 http://www.gradle.org/docs/current/userguide/scala_plugin.html Scala用のプロジェクトを作る まずはディレクトリ作成。 $ mkdir hello-gradle-scala $ cd hello-gradle-scala/ $ mkdir -p src/main/scala 続いて、build.gradleを作成します。 apply plugin: 'scala' repositories { mavenCentral() } dependencies { scalaTools 'org.scala-lang:scala-compiler:2.9.2' scalaTools 'org.sca

    GradleでScalaを使う - CLOVER🍀
  • Groovyの簡易依存関係管理ツール、Grapeを使ってみる - CLOVER🍀

    Groovy 2.0が出ましたね〜。機能的なところはあんまり見てませんが、なんか型チェックとかができるようになったんだとか?それって、Groovyで待ち望まれてたものなんでしょうか?よくわからんです…。 ま、とりあえずバージョンアップはしておきましたと。 ところで、Groovyでビルドや依存関係の管理ツールといえばGradleが有名だと思いますが、自分はそれほどどっぷりGroovyを使っているわけではないので、これを触るのは少し後にして、今はもっと簡易的というか標準で搭載されているGrapeを使ってみようと思います。 Grapeとは? Apache Ivyを使った、Groovyの標準的なモジュール管理ツールです。Mavenリポジトリをサポートしているので、他のリポジトリからJARファイルなどをダウンロードしてスクリプト中で依存関係を解決しつつ実行することができます。 詳細は、こちらです。

    Groovyの簡易依存関係管理ツール、Grapeを使ってみる - CLOVER🍀
    mnru
    mnru 2012/07/08
  • Groovy、Scala、Clojureで関数合成 - CLOVER🍀

    あまり使ったことがないので、メモを兼ねて試してみます。 Groovy Groovyの場合は、Closureクラスのインスタンスを合成します。使用するメソッドは、leftShift(<<)とrightShift(>>)です。 def add2 = { x -> x + 2 } def multiply3 = { x -> x * 3 } def multiply3AndAdd2 = add2 << multiply3 // f << g は f(g(x)) def add2AndMultiply3 = add2 >> multiply3 // f >> g は g(f(x)) println(multiply3AndAdd2(2)) // (3 * 2) + 2 => 8 println(add2AndMultiply3(2)) // (2 + 2) * 3 => 12 f << g でf(

    Groovy、Scala、Clojureで関数合成 - CLOVER🍀
    mnru
    mnru 2012/04/17
  • Scala Compiler PluginでAST変換をやってみる - CLOVER🍀

    先週、Scalaの公式ページのDivByZeroプラグインを写経して、Scala Compiler Pluginを作成してみました。今度は、いよいよAST変換にトライしてみたいと思います。 動機は、@BeanPropertyアノテーションと@BooleanBeanPropertyアノテーションで、これを毎度毎度フィールドに付与するのってけっこう面倒だと思うのですよねぇ…。クラス単位で付与できないもんかしら?かといって、Scalaのアノテーションを調べても、そんなものはありません。 ※@scala.reflect.BeanInfoアノテーションが名前からして近そうでしたが、残念ながら意味が違いました… というわけで、せっかくAST変換に興味を持ったのでこれをテーマにAST変換を行うCompiler Pluginを作成してみたいと思います。 目標。以下のように、クラス定義に@Beansアノテー

    Scala Compiler PluginでAST変換をやってみる - CLOVER🍀
  • Scala Compilerで遊ぶ - CLOVER🍀

    Scalaは比較的DSLに向いている言語と言われていて、設定ファイルとかもScalaで書くといったような流れが各種著名なライブラリにはあるようです。 例えば、LiftのBoot.scalaとか…。 とはいえ、これらの設定ファイルってソースの一部ですよね。それって、都度コンパイルがいるってことじゃない?アプリケーションの再起動は仕方がないとしても、設定ファイルを変えるとコンパイルしなくちゃいけないってあんまりなんじゃ? で、Scala CompilerってJavaVM上で動くわけで…とすれば、Scala CompilerのAPIを直接呼び出すことで動的にコンパイルとかできないものかしら…と思ってちょっと調べてみたら、やっぱりやっている人達いましたよ。 Twitterだったけどね…。 EvalなんてクラスをTwitterが作っていたので、これを参考にScala Compiler APIで遊んで

    Scala Compilerで遊ぶ - CLOVER🍀
  • IntelliJでfsc、sbtを使う - CLOVER🍀

    Scalaでコードを書く時は、最近は滅法Emacs+sbtなことが多いのですが統合開発環境を使う時はEclipseよりもIntelliJを使うことの方が多いので、IntelliJを使った場合のfscおよびsbtを使う手順を載せておきます。…自分のメモとして。 まあ、このところは仕事の都合でEclipseを強制されているのがちょっと残念なのですが。 まずは、プラグインのインストール。メニューの「File」→「Settings」を選んで、IntelliJの設定画面を起動。その中から「Plugins」をクリックし、プラグイン一覧の表示が終わった辺りで「Available」タブを選び、Scalaとsbtのプラグインをそれぞれインストールします。キーワード「scala」で探すと、すぐに見つかると思います。 あとは、右クリックして「Download and Install」。インストールが終わると、I

    IntelliJでfsc、sbtを使う - CLOVER🍀
    mnru
    mnru 2011/09/14
  • カリー化の短縮表記を通常の表記で書いてみる - CLOVER🍀

    Scalaは関数を返す関数…いわゆるカリー化をサポートしていて、その例としてC#から拝借したusingの定義がよく挙がっています。 要は、こんなやつです。 Control.scala object Control { type Closeable = { def close(): Unit } def using[A <: Closeable, B](resource: A)(body: A => B): B = { try { body(resource) } finally { if (resource != null) resource.close() } } } closeメソッドを持った何かにCloseableという別名を与え、それを引数としてcloseメソッドを持ったクラスのインスタンスであれば何でも渡せるようになっています。あと、引数宣言の箇所が()2つと見慣れない感じになっ

    カリー化の短縮表記を通常の表記で書いてみる - CLOVER🍀
    mnru
    mnru 2011/05/29
    カリー化の短縮表記を通常の表記で書いてみる
  • 1