「まほうのこーどで♪ たのしい♪ れいがいが♪ ぬるぽぽ〜ん♪ 」 作ってみた。 // 入れ物はタッパーです。 trait Tapper[A] { val obj:A // RubyのObject#tap的な。引数fに自分自身を適用させて自身を返す。 // 副作用専用メソッド。nullだったらなにもしなーい def tap(f:A => Unit):A = { Option(obj).foreach(f);obj } // 上記の、戻り値Option版。nullだったらNoneが返る def tapOption(f:A => Unit):Option[A] = { Option(obj).foreach(f);Option(obj) } // いつでもmapできたら便利よね? def map[B](f:A => B):Option[B] = Option(obj).map(f) // Op
require 'bacon' describe 'A new array' do before do @ary = Array.new end it 'should be empty' do @ary.should.be.empty @ary.should.not.include 1 end it 'should have zero size' do @ary.size.should.equal 0 @ary.size.should.be.close 0.1, 0.5 end it 'should raise on trying fetch any index' do lambda { @ary.fetch 0 }. should.raise(IndexError). message.should.match(/out of array/) # Alternatively: should
Object#tapはそのブロックの評価結果を捨てるという風変わりなメソッドです。これは主としてメソッドチェーンにおける途中経過を覗き見るために使われます。 "charlie".upcase.tap{ |s| p s } # => "CHARLIE" .reverse.tap{ |s| p s } # => "EILRAHC" .gsub(/[aeiou]/i,'*') # => "**LR*HC" tapの副作用を使う もっとも、その評価結果を捨てるというユニークな特徴をうまく使えば、もっと面白いことができます。 例えば、ある変数の値を取得した上でその変数の値をリセットしたい場合を考えます。通常は次のように実装するのでしょう。
前回の最後にちょっと触ったメソッドチェインの話をするよ。 もくじ メソッドチェインって?コンフィギュレーション可メソッドチェイン化tapでもっとかわいくつなげてみるあとがきメソッドチェインって?メソッドを連続的に呼び出すことをメソッドチェインっていうんだけど、実際のコードを見てもらったほうが分かりやすいよ。 文字列をアンダースコア区切りからキャメルケースに変換するような処理を例にとってみるよ。 string = "hello_world" words = string.split("_") words = words.map {|word| word.capitalize } string = words.join("") ちょっと冗長な書き方だけど、一行ずつにしたほうが分かりやすいからね。 "hello_word"という文字列を"_"で分割して配列wordsに格納するよArray#map
前回紹介したac-mozc.elを導入するにあたりmozc-emacs-helperをインストールしなければいけない。 公式ではMacをサポートしていないので、インストール手順を公開した。 だが、インストール手順を実行していくのも面倒なので、homebrewでインストールできるようにしました。 インストール方法homebrew-mozc-emacs-helperを利用する。 homebrewがインストールしてあれば、下記だけでmozc-emacs-helperなどがインストールされます。 IMEとしてMacのシステム部分にファイルをおくので、ビルド後にsudoのパスワードが求められます。 $ brew tap hirocaster/homebrew-mozc-emacs-helper $ brew install mozc-emacs-helper 内部でやっていることは、基本的に前回紹介
TAP Producers TAP producers are any systems which output TAP. This page contains a catalog of software libraries that can act as TAP producers, grouped by programming language. Languages: Ada, C, C++, C#, Common Lisp, Crystal, Elixir, Erlang, Fish, Forth, Fortran, Gambas, Go, Haskell, Igor Pro, Java, JavaScript, Limbo, Lua, MATLAB, OCaml, Omnis Studio, Pascal, Perl5, Perl6, PHP, Prolog, Python, Ru
Test Anything Protocol TAP, the Test Anything Protocol, is a simple text-based interface between testing modules in a test harness. It decouples the reporting of errors from the presentation of the reports. One of its major uses is for noise reduction; when you have a suite of many tests, making them TAP producers and using a TAP consumer to view them helps ensures that you will see everything you
TAP(Test Anything Protocol)とは、テストを簡潔に記述するための書き方(プロトコル)のことです。 プロトコルというと難しそうですが、実際はとても簡単。標準出力に、以下のような出力を行うプログラムを作成すればよいのです。 1..4 ok 1 - Input file opened not ok 2 - First line of the input valid ok 3 - Read the rest of the file not ok 4 - Summarized correctly # TODO Not written yet 要点は (1) 最初の行に、テストの件数を表示する (2) 2行目以降に、テスト結果(ok/not ok)・テスト番号・説明を表示する 以上。 なお、2行目以降の必須項目はテスト結果(ok/not ok)だけです。 テスト番号は無くてもエ
2008年03月27日03:00 カテゴリArtLightweight Languages 「同じコード」の同じって何さ - TAPのススメ 問題は、この「同じコード」の定義。 「誰が書いても同じコード」は大事なことなのか - ひがやすを blog でも、「誰が書いても同じコード」にするってのは、そもそも無理だと思うんだよね。そうやって、わざわざドキュメントをたくさん書かせても、めためたなコードを書くやつはいて、総合テストするときに、現場は燃え上がるもの。ある程度の規模以上のプロジェクトなら、どこでもそんな感じじゃないかと思います。同じ「書き方」をしなければならないのか? 結果が「同じ」ならいいのか? もし後者だとしたら、実は 重要なのは、「誰でもメンテナンスできるコード」にすること。そのために、コーディング規約は、きちんと決めてみんなで守る、それ以上は、がちがちに縛る必要はない。 すら必
Ruby の添付ライブラリ test/unit は、Java のテスト・フレームワークを範にしているようで、煩雑で軽やかさがないのが難点です。なぜ、Perl のテスト・フレームワークに倣わなかったのか、Ruby の不思議の一つだと思っています。id:dankogai さんが不満を述べるのも、わかる気がします。 ⇒ 404 Blog Not Found:Ruby beyond Rails - 書評 - まるごとRuby! RubyはPerlに比べて、余計なところでTMTOWTDIを発揮しているように思えてならない。それを一番強く感じるのがテストのフレームワークで、なんであんなに種類があるのかわからない。TAPでほぼ統一されているPerlの連帯感からすると、テスト一個のためにクラスを書かせるなんて、間違った傲慢(false form of hubris)にしか感じられないのだが。 もっとも、賢
This article is about An automated testing protocol. For the network tunnel driver, see TUN/TAP. This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Test Anything Protocol" – news · newspapers · books · scholar · JSTOR (October 2017) (Learn how and when t
Ruby1.9に搭載されたtapが便利そうなので、Schemeに移植してみた。 ところでtapって何よ 副作用専門メソッド。 入力 -> tap -> 出力 V 副作用要するに、Linuxコマンドで言う所のtee。デバッグに便利かも。 Schemeに移植 簡単。 (define (tap f x) (f x) x) ワンライナでオケ。 使ってみる 1から10までのリストを二乗する。 (define (p x) (display x) (newline)) (define (square x) (* x x)) 結果がナカナカいい。 (map square (tap p (iota 10 1))) ; (1 2 3 4 5 6 7 8 9 10) ; (1 4 9 16 25 36 49 64 81 100) 途中にtapを挟んでおけば、任意の箇所にprintfデバッグを仕掛けられる。 se
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く