[解決済み] rubyのClassとKlassの違いは何ですか?
質問
ClassとKlassの違いは何ですか?
どのように解決するのですか?
class
は新しいクラスを定義するために使用されるキーワードです。予約キーワードなので、変数名として使うことはできません。Ruby のキーワードはどれも変数名として使うことができないので、変数名として
def
とか
module
または
if
または
end
など -
class
も同じです。
例えば、次のように考えてみましょう。
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
これを実行しようとすると、エラーになります。
class
を変数名として使用できないため、エラーとなります。
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
これを修正するために、識別子を
klass
を代わりに使います。これは特別なものではありませんが、慣習的にクラスやクラス名を扱うときに変数名として使われます。発音的には同じですが、予約キーワードではないので、Rubyでは何の問題もありません。
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
出力は、予想通り
["method", "inspect", "name", "public_class_method", "chop!"...
ここで任意の(予約されていない)変数名を使うこともできますが、コミュニティでは
klass
. これは特別な魔法があるわけではなく、単に「'class' という名前をここで使いたかったのですが、予約キーワードなので使えません」という意味です" 。
余談ですが、あなたは何度か打ち間違えているので、Ruby では大文字と小文字が重要であることを指摘しておきます。大文字で始まるトークンは定数です。を経由して ツルハシ :
<ブロッククオート定数名は大文字で始まり、その後に名前文字が続きます。クラス名とモジュール名は定数であり、定数の命名規則に従います。慣習上、定数変数は通常大文字とアンダースコアを使って全体的に綴られます。
したがって、正しい表記は
class
であり
klass
よりも、むしろ
Class
と
Klass
. 後者は定数となり
Class
と
Klass
は有効な定数名ですが、わかりやすくするために使用しないことをお勧めします。
関連
-
[解決済み] Pythonで静的なクラス変数は可能ですか?
-
[解決済み] どのような場合に '$this' よりも 'self' を使うべきですか?
-
[解決済み] Could not find or load main class "とはどういう意味ですか?
-
[解決済み] 自分」という言葉は何のためにあるのか?
-
[解決済み] Pythonの旧スタイルのクラスと新スタイルのクラスの違いは何ですか?
-
[解決済み] .NETにおけるstructとclassの違いは何ですか?
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] init__と__call__の違いは何ですか?
-
[解決済み] Rubyのincludeとrequireの違いは何ですか?
-
[解決済み] Rubyで本当に安いコマンドラインオプションのパース
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ...』の違い (ダブルドット) と '...' の違い?(トリプルドット)の違いについて教えてください。
-
[解決済み] Rubyの文字列の中から"˶‾‾‾˵"を削除するにはどうしたらいいですか?
-
[解決済み] Hash each ループでインデックスにアクセスすることは可能ですか?
-
[解決済み] rvm use 2.0.0 --default を実行すると、"Warning! PATH is not properly set up" と表示される。
-
[解決済み] Rubyでbeginとendのブロックを使わずにrescueを使うには?
-
[解決済み] Rubyの"==="演算子は何をするのですか?重複] [重複
-
[解決済み] Rubyでコンソールから入力を読み込む?
-
[解決済み] このタスクを実行するには、Ruby と Sass をインストールし、PATH に配置する必要があります」という警告を解決するには?
-
[解決済み] Rubyオプションのパラメータ
-
[解決済み] rubyのinjectはreduceと同じ意味ですか?