PHPで
stringをarrayに変える際、区切り文字がある場合はexplodeメソッド、ない場合はstr_splitメソッドを使う。
プロを目指す人のためのRuby入門
標準ライブラリやgemを利用する場合、require構文を使う。
requireとの比較
- 何度でも読み込める。
- 拡張子を省略できない。
実行ディレクトリの外に読み込む対象のファイルがある場合に使う。
下記のライブラリを読み込む。
require 'minitest/autorun'
クラス名とファイル名は対応しており、ファイル名はスネークケースで書く。
minitestは「test_」で始まるメソッド名を探して実行する。
ここで扱う検証メソッドは3つのみ。
- assert_equal # 引数2つが等しければパス
- assert # 真であればパス
- refute # 偽であればパス
プロを目指す人のためのRuby入門
特徴が2つある。
t1 = true
f1 = false
!f1 || t1 #=> true
not f1 || t1 #=> false
t1 = true
t2 = true
f1 = false
t1 || t2 && f1 #=> true
t1 or t2 and f1 #=> false
Railsチュートリアルでの使用例
redirect_to root_url and return unless FILL_IN
def greeting(country)
country or return '入力してください'
elsifに相当するものはない。
疑問: unless文の使いどころがわからない。
プロを目指す人のためのRuby入門
sprintf('%0.3f', 1.2)
または下記のようにも書ける。
'%0.3f' % 1.2
複数のオブジェクトを表示したい場合、下記のように書く。
sprintf('%0.3f %0.3f', 1.2, 0.4)
または下記のようにも書ける。
'%0.3f %0.3f' % [1.2, 0.4]
10.class #=> Integer(過去のバージョンではBignumやFixnumクラスがあったが、2.4からはIntegerクラスにまとめられた。)
1.5.class #=> Float
複素数や有理数
irb(main):006:0> 2r.class
=> Rational
irb(main):007:0> 2i.class
=> Complex
「1.superclass」で「Numeric」が得られることを期待したが、「undefined method `superclass'」が返ってくる。
Ruby: How to find superclass of an object?
> 1.class.superclass
=> Numeric
> 1.class.ancestors
=> [Integer, Numeric, Comparable, Object, Kernel, BasicObject]
プロを目指す人のためのRuby入門
Ruby1.9以前の場合、デフォルトエンコーディングはUS-ASCIIだった。
なので日本語をUTF-8で扱う時、下記のマジックコメントが必要になった。
# encoding: shift_jis
マジックコメントはプラグマとも呼ばれる。
nilや正規表現などの値は全てオブジェクトでto_sなどのメソッドを呼ぶことができる。
メソッドの括弧は省略できる。
文の区切りは改行かセミコロン、バックスラッシュ、( で表す。
=begin と =endで囲んでコメントを書ける。
ソースコードの123や””と言った記述はリテラルという。
変数名はスネークケースで書く。
多重代入の使用を避ける。
c, d = 10
d #=> nil
=を複数回使うことも避ける。
a = b = 100
ダブルの場合、エスケープシーケンスを改行文字などのように解釈する。
黒田 努. Ruby on Rails 6 実践ガイド
3.5.5節
ブラウザで「http://example.com:3000/」を確認したところ、エラーで"add the following to your environment configuration"が表示された。
blocked_hosts.rbファイルの置き場所が間違っており、/app/configでなく/app/assets/configに配置していた。
phpを対話形式で動かしていたところ、「echo false」は何も表示されないことに気づいた。
$ php -a
> echo true;
1
> echo false;