Rubyだと…
#!/usr/bin/env ruby # -*- coding: utf-8 -*- # life-and-death-failed.rb life = "生" death = "死" puts life & death
こう書いて,ruby life-and-death-failed.rbを実行してみたところ,「undefined method `&' for "生":String (NoMethodError)」というエラーが出ました.
メソッドを追加しましょう.演算子式によると幸いにも,&は,再定義できる演算子に入っています.
#!/usr/bin/env ruby # -*- coding: utf-8 -*- # life-and-death.rb class String def &(other) raise unless String === other raise unless bytesize == other.bytesize unpack("C*").zip(other.unpack("C*")).map{|a, b| a & b}.pack("C*") end end life = ARGV.shift || "生" death = ARGV.shift || "死" puts life & death
ruby life-and-death.rbを実行したら,ちゃんと「愛」を出力してくれました.
コマンドライン引数を取得するようにしています.ruby life-and-death.rb osaka tokyoの出力は,「dcaia」となります.ruby life-and-death.rb perl rubyだと,「pebh」です.