0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

メモ: チェリー本の気づいたこと、印象に残ったことメモ 12/28

Last updated at Posted at 2021-12-28

プロを目指す人のためのRuby入門(通称チェリー本) 改訂2版

をやっていきます

オブジェクト.メソッド(引数1,引数2,引数3)

引数のカッコは省略することができる

オブジェクト.メソッド 引数1,引数2,引数3

業務でみたことあったな、こんなコード。


10.to_s(16)
# => "a"

数値を16進数の文字列に変換する

10.to_s(19)

これも実行結果は、"a"になった。
なんで。。。
一旦チェリー本を読み進めたいので、次。


=begin

こめんとだからエラーにならない?

=end

と複数行でコメントアウトできるっぽい。
ちなみに手元のルビーファイル(file.rb)
に上記のコードを書いて、ruby file.rbと実行したら

cherry.rb:1: syntax error, unexpected '='
=bigin
cherry.rb:5: syntax error, unexpected '=', expecting end-of-input

とバリバリエラーが起きた。

追記、biginではんくbeginでした。。。。

biginとendは、コード中にRDocというドキュメントを埋め込むために用意されている構文らしい。

RDocは、Rubyプログラミング言語用の埋め込みドキュメントジェネレーターです。 Rubyのソースコードを分析し、Rubyのオブジェクトとメソッドのページの構造化されたコレクションを生成します。

wikipedia引用。

Yardの元から組み込まれてる版的な感じですかね。

識別子と予約後

漢字や、ひらがなも識別子として使える

Ruby 3.0では _1 _2 _3 _4 _5 .. _9
が予約語になってる

空白文字

空白文字はいくつ続いてもいい。

しかり、メソッド呼び出しの()の手前にスペースを開けたら構文エラーが発生する場合もある。

リテラル

数値の123,文字列の"Hello"など、ソースコードに直接埋め込むことができる値のことをリテラルといいます。

数値、文字列

変数

数値から始まる変数名は使えない、エラーになる

c,d = 10

右辺の数が少ない場合はnilになる

c #=> 10
d #=> nil

右辺の数が多い場合ははみ出した値が切り捨てられる


e,f = 100, 200 ,300
e => 100
f => 200

アンダースコアで始まる変数名はあまり使わない。が
「宣言するが使わない」という意味をもたせてあえてアンダースコア始まりの変数名が使われるケースもあります。


# splitメソッドをつかって人名をスペースで二分割するが、使うのはファーストネームだけ
# ラストネームは使わないので、変数名をアンダースコア始まりにする

first_name , _last_name = 'Scott Tiger'.split(' ')
p first_name #=> scott

# このバリエーションで、変数名をアンダースコア一文字にしてしまうケースもある

first_name , _ = 'Scott Tiger'.split(' ')
p first_name #=> scott


# 両方にhelloを代入する
 a = b = 'hello'

a.upcase!

# aだけを大文字にしたはずなのにbも大文字に変わってしまった

a #=> "HELLO"
b #=> "HELLO"

#別々に代入した場合は、この問題はおきない

c = "hello"
d = "hello"

c.upcase!

c #=> "HELLO"
d #=> "hello"


a = b = 'hello'は同じハッシュ値であるhelloを代入してしまった。

c = "hello"
d = "hello"

見かけ上はどっちもhelloだが、ハッシュ値が違う。的な感じなのかな。

というような予想をしつつ次

文字列

シングルクォートのなかで、シングルクォートを使いたいとき
ダブルクォートのなかで、ダブルクォートを使いたいときは、バックスラッシュでエスケープ


puts 'He said, "Dont\'t speak"'
#=> He said, "Don't speak"


文字列の比較


"a" < "b" #=> true

文字列を構成するバイト値が、大小比較の基準となる


数値


数値には_を含めることができる

1_000_000_000 #=> 1000000000



変数の手前に - をつけると数値の正と負を反転できる

n = 1

-n #=> -1

1/2 #=> 0.5ではなく0になる


1.0 / 2 #=> 0.5

1 / 2.0 #=> 0.5

小数点以下の値が必要な場合はどちらかの値に小数点の.0を付けます


変数に整数が入ってる場合は to_fメソッドを呼ぶことで整数から少数に変更することができます。
*浮動小数点数 Float 

n = 1
n.to_f #=>  1.0
n.tof /2 #=> 0.5


**はべき乗を求める演算子

2**3 #=> 8

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?