Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
よくつかうメソッドの nil? empty? blank? のまとめ。 nil? すべてのオブジェクトにある。nilのときにTrueを返す。 empty? 文字の長さが0のとき、配列が空のときにTrueを返す。 blank? railsの拡張。nil, "", " ", **, {} のいずれかでTrueを返す。 素晴らしいまとめですね!ootokageさんに感謝。 PHP使うときはempty(0)でtrueになりますが、上記のメソッドどれも0をチェックしないですね。。.zero?というのメソッドは一応あるようですが。 迷ったらここにいっぱいサンプルがあります。 0.nil? #=> false 0.zero? #= true 0.empty? #=> NoMethodError 0.blank? #=> false 0 == false #=> false "".nil? #=> fal
スレッドとは スレッドとは、プログラムの処理の流れのことである。 複数の処理の流れを持つプログラムを「マルチスレッドのプログラム」と呼ぶ。 これは特段特別な概念ではなく、日常生活でもよくあることである。 本命の彼女と付き合いながら、もう一人別の子と付き合ったりするとき。 この人はマルチスレッドで女性と付き合ってると言えるし、合コンで出会っていいなと思った女の子が2人いて、同時にメールを送信してデートに誘ったりするのもある意味マルチスレッドである。 もっとちゃんとした例だと、パスタを茹でながらソースを温めるとか、そんな感じだ。 RubyのマルチスレッドはOSのマルチスレッドの機能を利用せずに実装されているため、マルチスレッドを用いてもフクスのプロセッサを利用できない。その代わり、低機能のOS上でもマルチスレッド機能を利用することができるようになっている。 並行して複数の処理を実行させるプログ
会社に尊敬する先輩がいる。 その人は僕の6歳年上だ。ゼロから勉強したはずなのに、iOSアプリも一ヶ月くらいで作りあげてしまった。 経験値が高いと、新しいことの習得も早い。 その人のさらに上にはもっともっと優秀な人がいる。 6歳年上のプログラマーが6合目にいるとしたら、僕はまだ0.5合目だ。 もっともっと上にたくさんの人がいる。大きな価値を生み出している。 そして、まだ会ったことのないところに、もっともっとすごい人がたくさんいるんだろう。 果てなく遠い、偉大なプログラマーへの道。 今の夜中までやってるプログラミングの勉強が報われるかはわからない。 報われないかもしれない。 たとえ10000時間プログラミングの勉強をしたところで、誰にも追いつけないかもしれない。 でも、こればっかりはやってみないとわからない。 才能があるか、ないかなんて、本当に頑張ってみないとわからないんだ。 だからやる。業務
ユーザーからの入力などで、名前や電話番号などが入っていた場合があるとする。 これらをたとえばDBに入れようとしても、nilだとエラーになってしまうかもしれない。 そんなときに、nilを防ぐための書き方がある。 これをnilガードという。 実際に例を見てみよう。 class Person attr_accessor :last, :first def fullname @last ||= "" puts "#{@last.upcase},#{@first}" end end takashi = Person.new takashi.first = "takashi" takashi.last = "sato" #=>「SATO,takashi」と表示される takashi.fullname takeshi = Person.new takeshi.first = "世紀末リーダたけし" #=
nil?すべきか Rubyを使っているとコードをより簡潔により美しくしたいという欲求、つまりDRY欲が加速します。 例えば次のようなコードがあります。ここでの関心はprocess_userメソッドです。 class String def some_process "Process_completed for %s" % self end end def process_user unless @user @user = 'anonymous' end @user.some_process end @user = nil process_user # => "Process_completed for anonymous" @user = 'Charlie' process_user # => "Process_completed for Charlie"
Rubyの条件分岐処理の使い方についてです。条件分岐を綺麗に書けないとネストが深かったり式が汚かったり目も当てられないですからね。then は一応記述してますが基本的に省略した方がいいかなと思います。 if文について 基本構文 if文の基本的な構文は次のようになります。then は省略可能です。条件式にはif (条件式)のように括弧を付けることも可能ですが基本省略します。 if 条件式 then 処理文1 # 条件式の結果が真の時に実行される else 処理文2 # 条件式の結果が偽の時に実行される end elsif を使うと次のように複数の判定を追加することもできます。おもわず elseif と e を書いてしまいそうですね。シェルは elif だし紛らわしい…。 if 条件式1 then 処理文1 # 条件式1の結果が真の時に実行される elsif 条件式2 then 処理文2 #
巷で型の宣言の話で盛り上がっているようなので、自分の妄想というか、最近思っていることをひっそりと書きまとめてみたいと思います。書いてる途中で障害が発生したりして、公開しそびれていましたが、せっかく書いたので公開。 「変数」の「型の宣言」は「必要」なのか? のそれぞれのキーワードごとに話を進めていきます。 変数 そもそも、変数とは何なのかというお話です。変数とは、何かしらのひとまとまりのデータの格納してある場所を指し示すものだと、私は思っています。 a = 1; b = "Hello"; c = ["a", "b", "d"]; char a = 1; char *b = "Hello"; char c[] = {'a', 'b', 'c'}; 上はJavaScript、下はC言語のつもりです。上の2つの例で、a には 数字1 を代入しています。メモリ上のどこかに、例えば「00000001」
「まどか☆マギカから考えるメカニズムデザイン」も合わせてご参照ください。 class Hope attr_reader :value def initialize(value) @initial_value = value @value = value value_changed end def add(value) @value += value value_changed end def despair @value = - @initial_value end def value_changed=(block) @on_value_changed = block end def value_changed @on_value_changed.call(self) if @on_value_changed end end class Human def initialize h = H
メカニズムデザインとは、Wikipediaによると。「ゲームにおいてある特定の目的を達成するために、ルールを設計することである。」とのことです。大学の時に少し勉強したような気がする…。 まどか☆マギカの世界では、キュゥべえ(以下QB)はエントロピーの増大という目的のために、魔法少女を魔女にするよう落とし入れようとしているのに対し、改変後の世界ではQBと魔法少女らが協力する穏やかな世界になっています。改変前の世界ではQBによって悲劇が次々と起こったのに対し、改変後にはそのようなことはなくなりました。この違いを、メカニズムデザインの観点から考えてみたいと思います。 クラスのみんなには内緒だよっ! 注意事項 まどか☆マギカのネタバレが含まれています 数式が出てきますが難しくないです いっぽうで厳密な議論ではないです まどか☆マギカのおさらい QBは少女に対し「僕と契約して魔法少女になってよ」とせ
nilや例外に関する備忘録。 下記の記載はrails consoleで確認。 ActiveRecord 関連 「例外が発生する」パターンと「IDが見つからなければnilを返す」パターンを使い分ける必要がある。 find User.find(1) # => #<User id: 1, name: "sinsoku"> User.find(999) # 存在しないid # 例外 ActiveRecord::RecordNotFound: Couldn't find User with ID=999 find_by_id User.find_by_id(1) # => #<User id: 1, name: "sinsoku"> User.find(999) # 存在しないid # => nil where User.where(:id => 1).first # => #<User id: 1
Rubyのnilは便利ですよというお話です。 Ruby人口を増やしたいなぁということで、とても簡単な話題でいきます。(これでハードルが下がった) Ruby Advent Calendar jp: 2011 の18日目の記事です。17日目はser1zwさんです。 インスタンス変数 さて、おもむろにirbを開いて、@hogeと打ってみましょう。nilが返ってきます。 @hoge 定義されていないインスタンス変数を参照すると、nilが返ってきます。 では、次のコードをご覧ください。printメソッドの中でインスタンス変数を利用する際に、nil?でnilのチェックをしてから利用しています。 class Message attr_accessor :to, :message def print @to = default_to if @to.nil? @message = '' if @messag
Rails入門です。 require 'active_support'でactive_supportを読み込んだRubyでは、真偽判定に以下のメソッドが使えます。 nil? Rubyの標準メソッド。nilの場合のみtrueを返し、それ以外はfalseを返す。nilとfalseを判別したい場合などに、==演算子を使わずに書ける。 empty? String や Array に実装されているメソッド。空の文字列や空の配列の場合にtrueを返す。nilに対して呼び出すとNoMethodErrorが発生する。 blank? nil? or empty? のようなメソッド。nilまたは空のオブジェクトを判定できる。 present? !blank? を実行するメソッド。unless hoge.blank? とするくらいなら、if hoge.present? としたほうがelsifも書けるしすっきり。
self はクラスメソッドの中で参照された場合はクラス自身、インスタンスメソッドの中で参照された場合はインスタンスを表します。 self については別のところでまた詳しく解説したいと思います。 __FILE__ は現在のソースファイル名、 __LINE__ は現在のソースファイルの中の行番号、 __ENCODING__ はソースファイルの文字コードを参照できます。 例えば次の簡単なサンプルを実行してみます。
アプリの開発をしていると、アプリが吐き出すのログを見ることが多いと思います。 以前会社の同僚に教えてもらったので、自分で考えをまとめるために記事にします。 背景 僕の場合Railsで開発することが多く、development.logなどを見ることが多いです。 ログを垂れ流して見る場合ターミナルで tailf コマンドや tail -f を使っていて、 必要があれば Ctrl-c で止めてターミナルをスクロールしてログを見ていました。 あとはターミナルの検索機能で文字列検索したり。。。などなど そんな人に tail ではなく less を使うとちょっと便利だよという内容です。 lessの基本 Unix関連のOSには多分デフォルトでインストールされていると思います。 コマンドの引数にファイル名を指定して起動します。 操作感は more や vi と似ています。 vi とは違い起動時にファイルの
Gemfile の 「group :test, :development do」ブロックに書いている 個人的に最強な設定 を晒したいと思います。(2013/10/24 現在) 作業環境 Ruby 2.0.0p247 Rails 4.0.0 Gemfileに設定している内容 ※ コメントに随時変更したものを追記しますー group :test, :development do gem 'pry-rails' gem 'pry-doc' gem 'pry-stack_explorer' if RUBY_VERSION >= '2.0.0' gem 'pry-byebug' else # 以下はRuby1.9の時のみ使う(pry-byebugの代わりに) # debuggerは1.9以下でしか動作しない, remote は byebug で使えないようになった gem 'pry-debugger
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く