文字列が予約語かどうかを判断するために Ruby に組み込まれているものはありますか? みたいな"next".is_keyword?
?
4 に答える
私が考えることができる唯一の方法は、あなたが知っているすべてのキーワードを配列にロードすることです。
class String
def is_keyword?
%w{__FILE__ __LINE__ alias and begin BEGIN break case class def defined? do else elsif end END ensure false for if in module next nil not or redo rescue retry return self super then true undef unless until when while yield}.include? self
end
end
"foobar".is_keyword? # => false
"for".is_keyword? # => true
参考のため:
- これが組み込みの方法ではないことはわかっています。これが私が考えることができる唯一の方法です。私に反対票を投じないでください。
- 私が含めたリストは、真のキーワードのリストです。
public
、protected
および friends は実際にはキーワードではなく、モジュールまたはクラスの作成中に呼び出される重要なメソッドの名前にすぎません。これは、Ruby DSL の要素と考えることができます。
私の知る限りprotected
、予約語ではありません。重要なメソッドの名前にすぎません。
http://wiki.rubyonrails.org/rails/pages/reservedwordsには、使用できない予約語 (Rails またはその依存関係を使用している場合にのみ適用されるものもあります) と、問題を引き起こす可能性のあるメソッド名がリストされています。
これがあなたの質問に完全に答えない場合は、メソッド名または変数名に興味があるかどうか、およびまったく使用できない単語または他の原因となる可能性のある単語について心配しているかどうかをより完全に定義できますか?物事がうまくいかない?
Ruby gem rubykeywordを使用します。キーワードを特定するだけではありません。string.keyword?
キーワードかどうかを示します。string.define
キーワードの定義を示します。もありstring.example
ます。
「保護された」と呼ばれるメソッドを実装したいクラスがある場合、そのメソッドを定義する前に、そのクラスのインスタンスを作成して呼び出します
インスタンスメソッド
これにより、クラスに継承されたすべてのメソッドが表示されます。「保護」があれば、それは ruby によって予約されています。