学習記録

2020-02-09に作成

個人用の学習記録。成果がなくとも毎日更新。

所有者限定モードのためこのボードには投稿できません ボードとは?

PHPで
stringをarrayに変える際、区切り文字がある場合はexplodeメソッド、ない場合はstr_splitメソッドを使う。


プロを目指す人のためのRuby入門

2.12.7 require

標準ライブラリやgemを利用する場合、require構文を使う。

2.12.8 load

requireとの比較
- 何度でも読み込める。
- 拡張子を省略できない。

2.12.9 require_relative

実行ディレクトリの外に読み込む対象のファイルがある場合に使う。

3.2.1 テストコードの雛形

下記のライブラリを読み込む。

require 'minitest/autorun'

クラス名とファイル名は対応しており、ファイル名はスネークケースで書く。

minitestは「test_」で始まるメソッド名を探して実行する。

ここで扱う検証メソッドは3つのみ。
- assert_equal # 引数2つが等しければパス
- assert # 真であればパス
- refute # 偽であればパス


プロを目指す人のためのRuby入門

2.10.2 and, or, not

特徴が2つある。

  1. 優先順位の低い演算子である。
t1 = true
f1 = false
!f1 || t1       #=> true
not f1 || t1    #=> false
  1. andとorは優先順位が同じなので、左から順に評価される。
t1 = true
t2 = true
f1 = false
t1 || t2 && f1  #=> true
t1 or t2 and f1 #=> false

制御フローの例(and)

Railsチュートリアルでの使用例

redirect_to root_url and return unless FILL_IN

制御フローの例(or)

def greeting(country)
  country or return '入力してください'

2.10.3 unless文

elsifに相当するものはない。
疑問: unless文の使いどころがわからない。


プロを目指す人のためのRuby入門

2.8.4 フォーマットを指定

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]

2.9.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

マジックコメントはプラグマとも呼ばれる。

2.2.1

nilや正規表現などの値は全てオブジェクトでto_sなどのメソッドを呼ぶことができる。

2.2.2

メソッドの括弧は省略できる。

2.2.3

文の区切りは改行かセミコロン、バックスラッシュ、( で表す。

2.2.4 コメント

=begin と =endで囲んでコメントを書ける。

2.2.7 リテラル

ソースコードの123や””と言った記述はリテラルという。

2.2.8

変数名はスネークケースで書く。

多重代入の使用を避ける。

c, d = 10
d #=> nil

=を複数回使うことも避ける。

a = b = 100

2.3.1 シングルクォートとダブルクォート

ダブルの場合、エスケープシーケンスを改行文字などのように解釈する。


黒田 努. 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;