You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
class FizzBuzz def self.to_proc ->n{ case 0 when n % 15 then :FizzBuzz when n % 3 then :Fizz when n % 5 then :Buzz else n end } end end puts (1..100).map(&FizzBuzz) # => [1, 2, :Fizz, 4, :Buzz, :Fizz, 7, 8, :Fizz, :Buzz, 11, :Fizz, 13, 14, :FizzBuzz, 16, 17, :Fizz, 19, :Buzz, :Fizz, 22, 23, :Fizz, :Buzz, 26, :Fizz, 28, 29, :FizzBuzz, 31, 32, :Fizz, 34, :Buzz, :Fizz, 37, 38, :Fizz, :Buzz, 41, :Fizz
eval [<<"".chomp.tr(" - ", "0-9a-f")].pack("H*") 1 2 Fizz 4 Buzz Fizz 7 *** しょうりゃく *** 94 Buzz Fizz 97 98 Fizz Buzz ごく普通のFizzBuzzです。 ただし、上のソースをコピペしても絶対に動きません。 コピペじゃ無理なのでGitHubにアップロードしました。 下のリンクから右クリック等で ファイルを直接ダウンロードして 実行してください。 (下のリンクからでも、コピペじゃたぶん無理です) あと環境によっても動かないかもしれません。 以下の環境で動作確認しました。 Mac OS X 10.10.2 Ruby 2.2.0p0 説明 予想付くかもですが、空白の部分にソースを書き込んであります。 見えてる部分はヒアドキュメント<<""で空行までの文字列(空白)を取り出し、元の文字
最近不適切にFizzBuzzをやるのが楽しく、常にFizzBuzzのことばかり考えている気がします。これが"恋"というものなのでしょうか。 というわけなので、最近書いたFizzBuzzをいくつか紹介したいと思います。 basic.rb 基本パターン (1..100).each do |n| puts case 0 when n % 15 then :FizzBuzz when n % 3 then :Fizz when n % 5 then :Buzz else n end end いいですね。ポイントはcaseの使い方です。caseは、caseに渡したオブジェクトと、各when節の評価結果を===メソッドで比較します。例えばFizzBuzzに該当するかの判定部分は0 === n % 15といった処理が走ることになるわけですね。 tap.rb tap with breakの活用
%w`foo bar baz`.map{|it| it.upcase } #=> ["FOO", "BAR", "BAZ"] それぞれの要素に対してupcaseを適用する、ただそれだけのためにitを2回も記述しなければなりません。Rubyはブロックを多用する言語なのでこの様なコードを書く機会が多く、やがてあなたは辟易するはずです。 上記の例ではmap(&:upcase)と書き直すことができますが、ブロックを使用しない方向に進んでしまうと、少しでも処理が複雑になると破綻してしまいます。詳しくはブロックなしRubyをやろうとすると関数型プログラ…うーんリストプロセッ、えーと感じ感じを参照してください。 Procを拡張しよう、ということでおもむろにlambda_driverをインストールするのも良いですが、今回はブロックそのもの(ブロックを取り扱うメソッドそのもの)を拡張する形でこれの解決を図り
Programmers make mistakes. Some of them are just annoying (for others to read) and some are really dangerous. Here is my selection of 10 mistakes done by Ruby / Ruby on Rails developers. These tips are easy to follow and can save you much time of later debugging. 1. Double negative and complex conditionals if !user.nil? # ... end unless user.blank? # ... end unless user.active? || address.confirme
method_missing を再定義したときは、respond_to? も再定義した方が良いのか検討すべきです。書籍「メタプログラミングRuby」でも指摘されています*1。 class Foo def initialize(bar_obj) @bar_obj = bar_obj end def method_missing(name) if name.to_s =~ /^(aaa|bbb|ccc)$/ @bar_obj.send("some_#{name}") end end def respond_to?(method) @bar_obj.respond_to?("some_#{method}") || super end end class Bar def some_aaa; "a"; end def some_bbb; "b"; end def some_ccc; "a"; end
Puma is Now the Recommended Ruby WebserverChange effective on 23 January 2015 Heroku now recommends using the Puma webserver. The previously recommended webserver, Unicorn, is susceptible to slow client attacks. If you are using Unicorn on Heroku please migrate to Puma. For more information read Deploying Rails Applications with the Puma Web Server.
いきなり読み始めてもよいのですが、事前に軽く準備しておくと読みやすくなります。 読みたいソースコードをダウンロード bundle install --path vendor/bundle 検索用のインデックスを貼る 読む bgm.rbを例に説明します。 読みたいソースコードをダウンロード hitode909/bgm $ git clone git@github.com:hitode909/bgm.git $ cd bgm bundle install --path vendor/bundle $ bundle install --path vendor/bundle . . Installing json 1.8.2 Installing multi_xml 0.5.5 Installing httparty 0.13.3 Installing itunes-search-api 0.1.
株とサイバーって相性良いすよね。 こんにちは。 マツコ・デラックスの面白さに最近はまっているvsannaです。 あの超ニッチなおすすめ商品紹介する番組めっちゃ面白くないすか? 前回記事(【スクレイピングのやり方#1】周りに勧められてスクレイピングなるものをしてみたいけど何すればいいのかわからなかったあの日の自分へ)作成のためのスクレイピングの勉強中に面白いgemを発見したので、今回はそのご紹介です。 対象は、 Rubyの環境がある。(読み書き実行がある程度できる) ドットインストールのRubyを通し見でOK 株価分析に興味がある。 という方です。 でははりきって参りましょう。 今回やってみること ご紹介するのはyahooファイナンスをスクレピングしてくれるgemのjostock。 なお株についてあまり詳しくないので、数字の理解や扱いについては深く突っ込まないていただけると嬉しいです… あ
p <<PHP_VERSION <?php PHP_VERSION ;print "\033[1F\033[1M"; //.tap{ define_method :range, -> s,e { s.upto e } } //.tap{ define_method :array_map, -> f,seq { seq.map{ |x| f.(x) } } } //.tap{ define_method :function, -> x,&b { -> x { $x=x;b.call } } } array_map(function($x){ print $x % 15 == 0 ? 'FizzBuzz' : ($x % 3 == 0 ? 'Fizz' : ($x % 5 == 0 ? 'Buzz' : $x)); print "\n"; }, range(1,100)); ruby php.
平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識
Callbacks are a great technique for achieving simplicity and flexibility. Simply put, a callback is a block of code passed as an argument to a method. In Ruby, code blocks are everywhere and Ruby makes it trivial to pass a block of code to methods. For example: def foo(bar, &block) callback = block callback.call(bar) end foo(5) {|x| x * x} # => 25 But what do we do when a method needs two blocks o
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く