LotosLabo

プログラミング技術とか気になった情報を載せていきます

Ruby言語について8

アクセス制御

アクセス制御には「public」「private」の他に「protected」がある。予想外の結果となることがありますのでオブジェクトからは実行出来ないようにアクセスを制限する事。

オブジェクトからインスタンスメソッドとして実行可能なメソッドは「public」、クラス内の他のメソッドからのみ実行可能実行可能なメソッドは「private」。


initializeメソッド

通常のメソッドは特に指定しない場合は「public」となりますが「initialize」メソッドだけは常に「private」メソッドとして定義されます。よって「initialize」メソッドをクラスのオブジェクトから実行することは出来ません。

モジュールの定義

module モジュール名
end

モジュール名は大文字から始まる

例:

module HeikinModule
  def heikin(x, y)
    kekka = (x + y) / 2
    print(kekka)
  end
end



モジュールはクラスと同じくメソッドを定義する事が出来ます。クラス変数に相当するものはモジュールにはありませんが定数は定義する事が出来ます。



モジュールを関数として扱う


モジュールはクラスのようにオブジェクトを作成することは出来ませんので、モジュールの使用方法は関数のようにモジュール内に定義されたメソッドを実行するか、又はクラスの中にインクルードするかの二通りがあります。


例:

module SuuchiModule
  def minValue(x, y)
    if x < y
      return x
    else
      return y
    end
  end

  def maxValue(x, y)
    if x > y
      return x
    else
      return y
    end
  end

  module_function :minValue
  module_function :maxValue
end

print(SuuchiModule.minValue(10, 8), "\n")
print(SuuchiModule.maxValue(10, 8), "\n")


モジュールをインクルード

include モジュール名


例:

module SuuchiModule
  def minValue(x, y)
    if x < y
      return x
    else
      return y
    end
  end

  def maxValue(x, y)
    if x > y
      return x
    else
      return y
    end
  end

  module_function :minValue
  module_function :maxValue
end

include SuuchiModule
print(minValue(10, 8), "\n")
print(maxValue(10, 8), "\n")



出力:

8
10


Numericクラス

IntegerクラスとFloatクラスがあります。
Integerは整数、Floatは小数です。


<Integer>

FixnumとBignumがあり、31ビット程度に収まればFixnum、それ以上はBignumになる。

intNum = 10
floatNum = 8.4


例:

i = Integer.induced_from(12)
f = Float.induced_from(12)
print(i, "\n")
print(f, "\n")



出力

12
12.0

Numericクラスの変換


Integer →  Floatクラス

to_f  メソッド

num = 10.to_f
numにはFloat型の値10.0


Foatクラス → Integer

to_i メソッド

num = 12.67.to_i

四捨五入などの方法で整数を変換

<小数点以下を四捨五入して整数に変換>

roundメソッドを使用


roundメソッドは四捨五入して整数に丸めます。

num = 10.3.round

<小数点以下を大きい方の整数へ変換>

ceilメソッドを使用
ceil」メソッドは大きい方の整数に丸めます。
num = 10.3.ceil



<小数点以下を小さい方の整数へ変換>

floorメソッドを使用
「floor」メソッドは小さい方の整数に丸めます。
num = 10.3.floor

整数を文字列へ変換する


to_sを使用

引数を指定しない「to_s」メソッドを使った場合は整数を10進数の形式で文字列に変換します。

str = 12.to_s

文字コードに対応する文字を取得

chr メソッド

例:

for i in 65..100
  print("文字コード ", i, " の文字は", i.chr, "です\n")
end

出力

文字コード 65 の文字はAです
      ↓
文字コード 100 の文字はdです


除算による商と剰余を取得


商を求めるにはNumericクラスでdivメソッドとquoメソッド

num = 10.div(3)

絶対値を取得


absメソッド

num = (-5).abs